Sección 1 - Paso 2.5 - Error 422 en solicitud HTTP Post (nodo SendToPriorityQueue)

  • versión de n8n: 2.30.7 (Cloud)
  • Base de datos (predeterminado: SQLite): predeterminado
  • configuración de n8n EXECUTIONS_PROCESS (predeterminado: own, main): predeterminado
  • Ejecutando n8n mediante (Docker, npm, n8n cloud, aplicación de escritorio): n8n cloud
  • Sistema operativo: Windows 11

Hola,

Aunque mi otro nodo HTTP POST Request funciona correctamente, mi nodo SendToPriorityQueue devuelve el siguiente error:

Tu solicitud no es válida o el servicio no pudo procesarla [elemento 0]

Faltan uno o más parámetros requeridos. Asegúrate de estar enviando tu assessment_id y datos de pedido.

Pensé que podría ser un problema con la entrada, ya que la única diferencia entre esta y la solicitud HTTP Post que funciona es el hecho de que la entrada en la primera es una lista de pedidos envuelta en un objeto definido llamado enriched_orders, mientras que en la última solicitud POST que falla, la entrada es una matriz de pedidos indefinida - no hay un objeto envolvente, pero las instrucciones del curso no lo requieren, así que no puedo saber qué he hecho mal.

Aquí está el JSON para la solicitud POST:

{
"body": {
"order_id": "ORD-014",
"customer_id": "CUST-004",
"customer_name": "DataFlow Ltd",
"subscription": "Enterprise"
},
"headers": {
"x-assessment-id": "0a238a9ad1137d3bf5cf2df2e7355e3b",
"oculto": "oculto",
"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

Ese volcado de opciones es el objeto de solicitud interno de n8n, y dos cosas en él destacan: “json”: false, y no hay encabezado content-type en ningún lugar de la lista.

Por lo tanto, el punto de acceso probablemente está recibiendo un cuerpo que no está analizando como JSON, lo que produce exactamente el “falta uno o más parámetros requeridos” que estás viendo aunque los campos estén claramente en la carga. El servidor no encuentra order_id porque nunca analizó el cuerpo en campos en absoluto.

Compararía específicamente tus dos nodos HTTP Request en Body Content Type (Send Body, luego Body Content Type, luego JSON) en lugar de en la forma de los datos. Si el nodo que funciona está configurado en JSON y este no, esa diferencia por sí sola lo explica, y el contenedor enriched_orders es una pista falsa.

Dos cosas que lo aclararían rápidamente:

  1. Habilita “Include Response Headers and Status” en el nodo que falla. Un cuerpo 422 generalmente nombra el campo que no pudo encontrar, lo que convierte esto de conjeturas en una respuesta de una línea.

  2. Redirige temporalmente el nodo que falla a un nodo Webhook en otro flujo de trabajo y dispáralo una vez. Eso te muestra exactamente lo que llega, tanto el content-type como si el cuerpo llegó como campos analizados o como una sola cadena. Generalmente más rápido que razonarlo.

Una cosa que no puedo determinar desde aquí: si el punto de acceso también quiere assessment_id en el cuerpo, no solo como encabezado x-assessment-id. El error menciona “assessment_id y datos de pedido” juntos, lo que se lee como si esperara ambos en la carga, pero eso depende del contrato de API del curso. Si el cuerpo de respuesta del paso 1 lo menciona, esa es tu respuesta.