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 como 200.

  • 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 como 400.

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:

  1. 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
  2. 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:
  3. choice

    Define una estructura condicional que puede tener múltiples caminos, ejecutando diferentes conjuntos de acciones dependiendo de las condiciones especificadas.

    choice:
  4. 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
  5. 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"
  6. setHeader (otherwise)

    Define un encabezado HTTP específico para la respuesta cuando se cumple la condición otherwise. Aquí, el encabezado CamelHttpResponseCode se establece en 400.

    - setHeader:
        expression:
          constant:
            expression: "400"
          name: CamelHttpResponseCode
  7. 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 a New today.

    when:
      steps:
        - setBody:
            expression:
              constant:
                expression: Éxito
        - setHeader:
            expression:
              constant:
                expression: "200"
              name: CamelHttpResponseCode
          expression:
            jsonpath:
              expression: $.model.Details[?(@['Random nonsense'] == 'New today')]
  8. 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 en 200 (OK).

    steps:
      - setBody:
          expression:
            constant:
              expression: Éxito
      - setHeader:
          expression:
            constant:
              expression: "200"
            name: CamelHttpResponseCode
        expression:
          jsonpath:
            expression: $.model.Details[?(@['Random nonsense'] == 'New today')]
  9. 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
  10. setHeader (when)

    Define un encabezado HTTP específico para la respuesta cuando se cumple la condición when. Aquí, el encabezado CamelHttpResponseCode se establece en 200.

    - setHeader:
        expression:
          constant:
            expression: "200"
          name: CamelHttpResponseCode
  11. 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 a New today.

    expression:
      jsonpath:
        expression: $.model.Details[?(@['Random nonsense'] == 'New today')]

1. Una cadena constante es una secuencia de caracteres cuyo valor no cambia. En el contexto de la integración, las cadenas constantes se utilizan para establecer valores fijos para el cuerpo y los encabezados de las respuestas HTTP, asegurando que estos valores permanezcan consistentes siempre que se ejecute la ruta.
Thanks for your feedback!
EDIT

Share your suggestions with us!
Click here and then [+ Submit idea]