Integración con Choice
Script del flujo
Considere el script del flujo a continuación. Consulte también el resumen y la descripción de los elementos para una mejor comprensión.
- from:
uri: rest:post:/demo
steps:
- choice:
otherwise:
steps:
- setBody:
expression:
constant:
expression: "Error: ID no encontrado en el cuerpo de la solicitud"
- setHeader:
expression:
constant:
expression: "400"
name: CamelHttpResponseCode
when:
steps:
- setBody:
expression:
constant:
expression: Éxito
- setHeader:
expression:
constant:
expression: "200"
name: CamelHttpResponseCode
expression:
jsonpath:
expression: $.model.Details[?(@['Random nonsense'] == 'New today')]
Resumen
Este flujo configura una ruta que responde a solicitudes POST en el endpoint /demo
.
Dependiendo del contenido de la solicitud, el flujo realiza una verificación condicional:
La condición verifica si Random nonsense
dentro de $.model.Details
es New today
.
-
Si la condición es verdadera:
-
El cuerpo de la respuesta se define como
Éxito
. -
El encabezado
CamelHttpResponseCode
se define como200
.
-
-
Si la condición es falsa:
-
El cuerpo de la respuesta se define como
Error: ID no encontrado en el cuerpo de la solicitud
. -
El encabezado
CamelHttpResponseCode
se define como400
.
-
La estructura choice
permite un enrutamiento condicional flexible, mientras que setBody
y setHeader
permiten definir dinámicamente el cuerpo y los encabezados de la respuesta en función de las condiciones evaluadas.
Descripción de los elementos
A continuación se explica cada elemento del script de integración:
-
from
Define el punto de entrada de la ruta Camel. Especifica que la ruta responde a solicitudes HTTP POST en el endpoint
/demo
.- from: uri: rest:post:/demo
-
steps
Enumera las acciones a ejecutar cuando se recibe una solicitud en el endpoint definido. En el ejemplo, contiene una estructura condicional
choice
.steps: - choice:
-
choice
Define una estructura condicional que puede tener múltiples caminos, ejecutando diferentes conjuntos de acciones dependiendo de las condiciones especificadas.
choice:
-
otherwise
Define el conjunto de acciones a ejecutar si ninguna de las condiciones when se cumple. En este caso, establece el cuerpo de la respuesta a un mensaje de error y el código de respuesta HTTP a
400
(Bad Request).otherwise: steps: - setBody: expression: constant: expression: "Error: ID no encontrado en el cuerpo de la solicitud" - setHeader: expression: constant: expression: "400" name: CamelHttpResponseCode
-
setBody (otherwise)
Define el cuerpo de la respuesta HTTP cuando se cumple la condición otherwise. Aquí, el cuerpo se establece en la cadena constante
Error: ID no encontrado en el cuerpo de la solicitud
.[1]- setBody: expression: constant: expression: "Error: ID no encontrado en el cuerpo de la solicitud"
-
setHeader (otherwise)
Define un encabezado HTTP específico para la respuesta cuando se cumple la condición otherwise. Aquí, el encabezado
CamelHttpResponseCode
se establece en400
.- setHeader: expression: constant: expression: "400" name: CamelHttpResponseCode
-
when
Define un conjunto de acciones a ejecutar si se cumple una condición específica. En este caso, la condición verifica si el campo
Random nonsense
dentro de$.model.Details
es igual aNew today
.when: steps: - setBody: expression: constant: expression: Éxito - setHeader: expression: constant: expression: "200" name: CamelHttpResponseCode expression: jsonpath: expression: $.model.Details[?(@['Random nonsense'] == 'New today')]
-
steps (when)
Enumera las acciones a ejecutar si se cumple la condición when. En este caso, establece el cuerpo de la respuesta en
Éxito
y el código de respuesta HTTP en200
(OK).steps: - setBody: expression: constant: expression: Éxito - setHeader: expression: constant: expression: "200" name: CamelHttpResponseCode expression: jsonpath: expression: $.model.Details[?(@['Random nonsense'] == 'New today')]
-
setBody (when)
Define el cuerpo de la respuesta HTTP cuando se cumple la condición when. Aquí, el cuerpo se establece en la cadena constante
Éxito
.- setBody: expression: constant: expression: Éxito
-
setHeader (when)
Define un encabezado HTTP específico para la respuesta cuando se cumple la condición when. Aquí, el encabezado
CamelHttpResponseCode
se establece en200
.- setHeader: expression: constant: expression: "200" name: CamelHttpResponseCode
-
expression (when)
Especifica la condición a evaluar para determinar si se debe ejecutar el bloque when. Utiliza una expresión JSONPath para verificar si el campo
Random nonsense
dentro de$.model.Details
es igual aNew today
.expression: jsonpath: expression: $.model.Details[?(@['Random nonsense'] == 'New today')]
Consulte cómo crear expresiones JSONPath. |
Share your suggestions with us!
Click here and then [+ Submit idea]