Spring Integration-如何以编程方式使用uri param / url表达式?

问题描述 投票:1回答:1

我必须为以下步骤编写Spring Integration流程:

((1)从目录读取json文件

((2)转换为Java对象并添加标头

((3)转换为JSON

((4)发布至终点:POST http://127.0.0.1:8081/v1/userValidation

((5)提取对名为'UserValidationResponse'的Java对象的响应。该响应具有一个称为orderID的字段,该字段将在步骤7中使用。

(6)将输出写入到名为'userValidationPostOutputWriterChannel'的通道。此通道将记录Http状态。

(7)在端点上进行PUT:PUThttp://127.0.0.1:8081/v1/userValidation/{在步骤5中提取的orderID} /取消。

(8)将输出写入名为“ userValidationPostCancelOutputWriterChannel”的通道。此通道将记录Http状态。

我需要什么:

如何动态构建URLhttp://127.0.0.1:8081/v1/userValidation/{orderID} /取消?] >>

我在网上查询了一下,发现我必须使用uri参数。

您能以编程方式给我一个例子吗?

我只能使用config XML查找示例,并且我的代码中没有config XML。

样本代码:

@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();
}

来自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"    
}

下一次执行应为PUT http://127.0.0.1:8081/v1/userValidation/78e323f7-d3f9-11e9-a71a-035a2a38a4e0/cancel

我必须为以下步骤编写Spring Integration流程:(1)从目录读取json文件(2)转换为Java对象并添加标头(3)转换为JSON(4)发布到结束点:POST .. 。

java spring-integration uri
1个回答
2
投票

完全可以这样配置HTTP出站网关上的URI:

© www.soinside.com 2019 - 2024. All rights reserved.