我有一个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存在验证?可能是我错误配置了什么?
答案 0 :(得分:1)
谢谢你,@克劳斯·易卜生。
从Camel 2.22版本开始,现在我们可以验证传入的客户请求。
默认情况下,验证处于关闭状态。为了对其进行配置,我们需要按照以下方式使用 clientRequestValidation :
restConfiguration()
.component("restlet").host("localhost").port("port")
.clientRequestValidation(true);
有关更多详细信息,请访问:Client Request Validation - Apache Camel Manual