Section 1 - Étape 2.5 - Erreur 422 sur requête HTTP Post (nœud SendToPriorityQueue)

  • version n8n : 2.30.7 (Cloud)
  • Base de données (par défaut : SQLite) : par défaut
  • Paramètre n8n EXECUTIONS_PROCESS (par défaut : own, main) : par défaut
  • Exécution de n8n via (Docker, npm, n8n cloud, application de bureau) : n8n cloud
  • Système d’exploitation : Windows 11

Bonjour,

Bien que mon autre nœud HTTP POST Request fonctionne correctement, mon nœud SendToPriorityQueue retourne l’erreur suivante :

Votre demande est invalide ou n’a pas pu être traitée par le service [élément 0]

Un ou plusieurs paramètres obligatoires sont manquants. Assurez-vous d’envoyer votre assessment_id et les données de commande.

J’ai pensé que cela pouvait être un problème d’entrée, car la seule différence entre cela et la demande HTTP Post fonctionnelle est le fait que l’entrée dans la première est une liste de commandes enveloppée dans un objet défini appelé enriched_orders, tandis que dans cette dernière demande POST défaillante, l’entrée est un tableau de commandes indéfini - il n’y a pas d’objet encapsulant, mais les instructions du cours ne l’exigent pas, donc je ne peux pas comprendre ce que j’ai fait de mal.

Voici le JSON pour la demande POST :

{
"body": {
"order_id": "ORD-014",
"customer_id": "CUST-004",
"customer_name": "DataFlow Ltd",
"subscription": "Enterprise"
},
"headers": {
"x-assessment-id": "0a238a9ad1137d3bf5cf2df2e7355e3b",
"masqué": "masqué",
"accept": "application/json,text/html,application/xhtml+xml,application/xml,text/;q=0.9, image/;q=0.8, /;q=0.7"
},
"method": "POST",
"uri": "``https://learn.app.n8n.cloud/webhook/course/n8n102/priority-queue``",
"gzip": true,
"rejectUnauthorized": true,
"followRedirect": true,
"resolveWithFullResponse": true,
"sendCredentialsOnCrossOriginRedirect": false,
"followAllRedirects": true,
"timeout": 300000,
"encoding": null,
"json": false,
"useStream": true

Ce dump d’options est l’objet de requête interne de n8n, et deux choses y ressortent : « json » : false, et il n’y a pas d’en-tête content-type nulle part dans la liste.

L’endpoint reçoit donc très probablement un corps qu’il n’analyse pas comme JSON, ce qui produit exactement le message « missing one or more required parameters » que vous voyez, même si les champs sont clairement présents dans la charge utile. Le serveur ne trouve pas order_id parce qu’il n’a jamais analysé le corps en champs du tout.

Je vous recommande de comparer vos deux nœuds HTTP Request spécifiquement sur Body Content Type (Send Body, puis Body Content Type, puis JSON) plutôt que sur la forme des données. Si le nœud fonctionnel est défini sur JSON et celui-ci ne l’est pas, cette seule différence l’explique, et le wrapper enriched_orders est une fausse piste.

Deux choses qui clarifieraient rapidement la situation :

1. Activez « Include Response Headers and Status » sur le nœud défaillant. Un corps 422 nomme généralement le champ qu’il n’a pas pu trouver, ce qui transforme ceci d’une devinette en une réponse d’une seule ligne.

2. Réorientez temporairement le nœud défaillant vers un nœud Webhook dans un autre workflow et déclenchez-le une fois. Cela vous montre exactement ce qui arrive, à la fois le content-type et si le corps est arrivé comme champs analysés ou comme une seule chaîne. Généralement plus rapide que de raisonner à ce sujet.

Une chose que je ne peux pas déterminer d’ici : si l’endpoint veut aussi assessment_id dans le corps, pas seulement comme en-tête x-assessment-id. L’erreur nomme « assessment_id et order data » ensemble, ce qui ressemble à une attente des deux dans la charge utile, mais cela dépend du contrat API du cours. Si le corps de la réponse de l’étape 1 le nomme, c’est votre réponse.