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]