Camel Rest-DSL需要param忽略

时间:2018-05-23 13:28:11

标签: java apache-camel

我有一个Rest API,使用Camel Rest-DSL创建。有一个休息,消耗GET与一系列参数,其中一些是强制性的。

路线配置:

    rest().get("/{{camel.rest.version}}/myget")
            .param()
                .name("accountNumber")
                .dataType("string")
                .type(RestParamType.query)
                .required(true)
            .endParam()
            .param()
                .name("someId")
                .dataType("string")
                .type(RestParamType.query)
                .required(false)
            .endParam()
            .produces(REST_PR_CN_TYPE)
            .responseMessage().code("200").message("OK").endResponseMessage()
            .responseMessage().code("500").endResponseMessage()
            .route().routeId("rst_cardsInfo")
            .log(LoggingLevel.INFO, "ApiRq Recieved http request")
            .log(LoggingLevel.DEBUG, "AccountNumber: ${header.accountNumber}, SomeId: ${header.someId}")
            .id("rst_rst_info_recieved")
            .to("direct:drt_rst_info")
            .endRest();

当我打开swagger-ui生成的页面时,我的API看起来很好。 Param accountNumber被标记为必需,someId - 不是必需的。

使用任何其他工具,我可以发送没有任何参数的请求,并接收HTTP.200作为响应。我预计,如果需要param,但请求中不存在,则请求将失败。例如Spring Rest确保所有强制参数都存在。

Camel中是否有任何强制性的params存在验证?可能是我错误配置了什么?

1 个答案:

答案 0 :(得分:1)

谢谢你,@克劳斯·易卜生。

从Camel 2.22版本开始,现在我们可以验证传入的客户请求。

默认情况下,验证处于关闭状态。为了对其进行配置,我们需要按照以下方式使用 clientRequestValidation

restConfiguration()
    .component("restlet").host("localhost").port("port")
    .clientRequestValidation(true);

有关更多详细信息,请访问:Client Request Validation - Apache Camel Manual