Primavera Integração - Como usar uri param / url expressão de programação?

Deepboy:

Eu tenho que escrever fluxo Spring Integration para o abaixo passos:

(1) arquivos Leia JSON de um diretório

(2) transformação de objecto de Java e cabeçalho suplemento

(3) Transformação para JSON

(4) Adicione a ponto final: POST http://127.0.0.1:8081/v1/userValidation

(5) resposta Extrair para um objeto Java chamado 'UserValidationResponse'. A resposta tem um campo chamado orderID que será usado na etapa 7.

(6) gravar a saída a um canal chamado 'userValidationPostOutputWriterChannel'. Este canal vai registar o estado de HTTP.

(7) PUT em ponto final: PUT http://127.0.0.1:8081/v1/userValidation/ {orderID extraído no passo 5} / cancelar.

(8) escrever a saída de um canal de chamada 'userValidationPostCancelOutputWriterChannel'. Este canal vai registar o estado de HTTP.

O QUE EU PRECISO:

Como construir a URL http://127.0.0.1:8081/v1/userValidation/ {orderID} / cancelar dinamicamente?

Eu olhei para cima on-line e descobriram que eu tenho que usar um parâmetro uri.

Você pode por favor me dar um exemplo de programação?

Eu só poderia encontrar exemplos usando XML de configuração, e eu tenho XML NO configuração no meu código.

CÓDIGO DE AMOSTRA:

@Bean
public IntegrationFlow placeUserRequest(RestTemplate restTemplate) {
private String AUTHORIZATION = "USER";

    return IntegrationFlows.from(sourceDirectory(), configurer -> configurer.poller(Pollers.fixedDelay(10000)))
            .transform(Transformers.fromJson(UserRequest.class))
            .enrichHeaders(h -> h.header("Content-Type", "application/json"))
            .transform(Transformers.toJson())
            .handle(Http.outboundGateway("http://127.0.0.1:8081/v1/userValidation", restTemplate)
                    .httpMethod(HttpMethod.POST)
                    .mappedRequestHeaders("auth*", "TraceabilityID", AUTHORIZATION)
                    .charset("UTF-8")
                    .expectedResponseType(UserValidationResponse.class))
            .wireTap(flow -> flow.channel("userValidationPostOutputWriterChannel"))
            .handle(Http.outboundGateway("http://127.0.0.1:8081/v1/userValidation/" + parser.parseExpression("payload.getOrderID()") + "/cancel", restTemplate)
                    .httpMethod(HttpMethod.PUT)
                    .mappedRequestHeaders("auth*", "TraceabilityID", AUTHORIZATION)
                    .charset("UTF-8").expectedResponseType(Map.class))
            .wireTap(flow -> flow.channel("userValidationPostCancelOutputWriterChannel"))
            .get();
}

RESPOSTA DA AMOSTRA DE POST http://127.0.0.1:8081/v1/userValidation :

{
    "status": "CREATED", 
    "orderID": "78e323f7-d3f9-11e9-a71a-035a2a38a4e0",
    "userData" : {
            "userFName": "John",
            "userLName": "Smith",
            "userLocation": "Florida"
        },
    "userAccess": "USER"    
}

A próxima execução deve ser um PUT http://127.0.0.1:8081/v1/userValidation/78e323f7-d3f9-11e9-a71a-035a2a38a4e0/cancel .

Arteta:

É totalmente OK para ter esse URI no HTTP de saída gateway configurado como este:

 http://127.0.0.1:8081/v1/userValidation/{orderID}/cancel

Isso é chamado template. Você tem lá que orderID uriVariable . O Http.outboundGatewaytem suporte para isso também:

/**
 * Specify a value SpEL expression for the uri template variable.
 * @param variable the uri template variable.
 * @param expression the expression to evaluate value for te uri template variable.
 * @return the current Spec.
 * @see AbstractHttpRequestExecutingMessageHandler#setUriVariableExpressions(Map)
 */
public S uriVariable(String variable, String expression) {

Assim, para o seu caso de uso deve ser algo como isto:

 .handle(Http.outboundGateway("http://127.0.0.1:8081/v1/userValidation/{orderID}/cancel", restTemplate)
                .httpMethod(HttpMethod.PUT)
                .mappedRequestHeaders("auth*", "TraceabilityID", AUTHORIZATION)
                .charset("UTF-8").expectedResponseType(Map.class)
                .uriVariable("orderID", "payload.orderID"))

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=336265&siteId=1
Recomendado
Clasificación