Java 驼峰休息DSL所需参数已忽略

Java 驼峰休息DSL所需参数已忽略,java,apache-camel,Java,Apache Camel,我有一个RESTAPI,是用Camel Rest DSL创建的。还有一个rest,它使用GET和一系列参数,其中一些参数是必需的 路由配置: rest().get("/{{camel.rest.version}}/myget") .param() .name("accountNumber") .dataType("string") .type(RestParamType

我有一个RESTAPI,是用Camel Rest DSL创建的。还有一个rest,它使用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();
当我打开SwiggerUI生成的页面时,我的API看起来很好。参数accountNumber标记为必需,someId-标记为非必需

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


Camel中是否有任何强制参数存在性验证?可能是我弄错了什么吗?

啊,好的。在剩余的dsl中没有/只有一点点验证。它依赖于所选择的HTTP组件(servlet、restlet、undertow等)来实现这一点

但坦率地说,我们可以改进这一点,并让camelcore做一些预验证,如果选项已在您的示例中指定


我记录了一张票:

谢谢你,克劳斯·易卜生

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

默认情况下,将关闭验证。为了配置它,我们需要使用clientRequestValidation如下:

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

有关更多详细信息,请访问:

您使用的是什么版本的Camel,您是否尝试过更新版本的Camelversion@Claus易卜生,版本为2.21.0.000033-fuse-000001-redhat-1。不幸的是,我无法更改它,我的项目需要使用redhat repo。