Integração com Choice
Script do fluxo
Considere o script do fluxo abaixo.
Consulte também o resumo e a descrição dos elementos para maior compreensão.
- from:
    uri: rest:post:/demo
    steps:
      - choice:
          otherwise:
            steps:
              - setBody:
                  expression:
                    constant:
                      expression: "Erro: ID não encontrado no corpo da solicitação"
              - setHeader:
                  expression:
                    constant:
                      expression: "400"
                    name: CamelHttpResponseCode
          when:
            steps:
              - setBody:
                  expression:
                    constant:
                      expression: Sucesso
              - setHeader:
                  expression:
                    constant:
                      expression: "200"
                    name: CamelHttpResponseCode
                expression:
                  jsonpath:
                    expression: $.model.Details[?(@['Random nonsense'] == 'New today')]
Resumo
Este fluxo configura uma rota que responde a solicitações POST no endpoint /demo.
Dependendo do conteúdo da solicitação, o fluxo realiza uma verificação condicional:
A condição verifica se Random nonsense dentro de $.model.Details é New today.
- 
Se a condição for verdadeira:
- 
O corpo da resposta é definido como
Sucesso. - 
O cabeçalho
CamelHttpResponseCodeé definido como200. 
 - 
 - 
Se a condição for falsa:
- 
O corpo da resposta é definido como
Erro: ID não encontrado no corpo da solicitação. - 
O cabeçalho
CamelHttpResponseCodeé definido como400. 
 - 
 
A estrutura choice permite um roteamento condicional flexível, enquanto setBody e setHeader permitem definir dinamicamente o corpo e os cabeçalhos da resposta com base nas condições avaliadas.
Descrição dos elementos
Abaixo está a explicação de cada elemento do script da integração:
- 
from
Define o ponto de entrada da rota Camel. Especifica que a rota responde a solicitações HTTP POST no endpoint
/demo.- from: uri: rest:post:/demo - 
steps
Lista as ações a serem executadas quando uma solicitação é recebida no endpoint definido. No exemplo, contém uma estrutura condicional
choice.steps: - choice:
 - 
choice
Define uma estrutura condicional que pode ter múltiplos caminhos, executando diferentes conjuntos de ações dependendo das condições especificadas.
choice:
 - 
otherwise
Define o conjunto de ações a serem executadas caso nenhuma das condições when seja atendida. Nesse caso, define o corpo da resposta como uma mensagem de erro e o código de resposta HTTP como
400(Bad Request).otherwise: steps: - setBody: expression: constant: expression: "Erro: ID não encontrado no corpo da solicitação" - setHeader: expression: constant: expression: "400" name: CamelHttpResponseCode - 
setBody (otherwise)
Define o corpo da resposta HTTP quando a condição otherwise é atendida. Aqui, o corpo é definido como a string constante
Erro: ID não encontrado no corpo da solicitação. [1]- setBody: expression: constant: expression: "Erro: ID não encontrado no corpo da solicitação" - 
setHeader (otherwise)
Define um cabeçalho HTTP específico para a resposta quando a condição otherwise é atendida. Aqui, o cabeçalho
CamelHttpResponseCodeé definido como400.- setHeader: expression: constant: expression: "400" name: CamelHttpResponseCode - 
when
Define um conjunto de ações a serem executadas se uma condição específica for atendida. Neste caso, a condição verifica se o campo
Random nonsensedentro de$.model.Detailsé igual aNew today.when: steps: - setBody: expression: constant: expression: Sucesso - setHeader: expression: constant: expression: "200" name: CamelHttpResponseCode expression: jsonpath: expression: $.model.Details[?(@['Random nonsense'] == 'New today')] - 
steps (when)
Lista as ações a serem executadas se a condição when for atendida. Neste caso, define o corpo da resposta como
Sucessoe o código de resposta HTTP como200(OK).steps: - setBody: expression: constant: expression: Sucesso - setHeader: expression: constant: expression: "200" name: CamelHttpResponseCode expression: jsonpath: expression: $.model.Details[?(@['Random nonsense'] == 'New today')] - 
setBody (when)
Define o corpo da resposta HTTP quando a condição when é atendida. Aqui, o corpo é definido como a string constante
Sucesso.- setBody: expression: constant: expression: Sucesso - 
setHeader (when)
Define um cabeçalho HTTP específico para a resposta quando a condição when é atendida. Aqui, o cabeçalho
CamelHttpResponseCodeé definido como200.- setHeader: expression: constant: expression: "200" name: CamelHttpResponseCode - 
expression (when)
Especifica a condição a ser avaliada para determinar se o bloco when deve ser executado. Utiliza uma expressão JSONPath para verificar se o campo
Random nonsensedentro de$.model.Detailsé igual aNew today.expression: jsonpath: expression: $.model.Details[?(@['Random nonsense'] == 'New today')] 
Share your suggestions with us!
          Click here and then [+ Submit idea]