我正在使用camel REST-DSL [in camel documentation]组件开发REST服务。我成功发送了快乐路径的JSON请求,并使用(Rest-DSL和camel servlet)组合获得相同的响应。现在,当我们继续前进时,客户端可能会发送没有足够值或无效有效请求的Rest Service请求,现在我正在寻找在请求无效时从REST DSL发送400状态代码的方法。
请告知实现此目的的方法。
答案 0 :(得分:8)
我假设您正在使用自定义处理器或类似的东西进行验证。如果要发送HTTP错误代码,只需添加标题Exchange.HTTP_RESPONSE_CODE。
例如:exchange.getIn()。setHeader(Exchange.HTTP_RESPONSE_CODE,400);
行为可能取决于您使用的引擎。正如文档所说,它应该与servlet引擎一起使用:
答案 1 :(得分:6)
根据Pierre-Alban的建议,您可以验证处理器或服务类中的有效负载,并在处理器中设置正确的响应代码和消息。
另一种方法是从validator方法抛出异常,让路由构建器处理该异常。像这样:
onException(ValidationException.class)
.handled(true)
.setHeader(Exchange.HTTP_RESPONSE_CODE, constant(400))
.setHeader(Exchange.CONTENT_TYPE, constant("text/plain"))
.setBody(exceptionMessage());