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 nonsense
dentro 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
Sucesso
e 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 nonsense
dentro 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]