Rest 驼峰休息dsl发送400个状态码

Rest 驼峰休息dsl发送400个状态码,rest,apache-camel,fuseesb,Rest,Apache Camel,Fuseesb,我正在使用camel REST-DSL组件开发REST服务。我成功地发送了快乐路径的JSON请求,并使用(REST DSL和camel servlet)组合在同一条路径上获得响应。现在,随着我们向前推进,客户机可能发送的Rest服务请求没有足够的值或无效的有效请求,现在我正在寻找在请求无效时从Rest DSL发送400状态代码作为响应的方法 请就如何实现这一点提供建议。我假设您是在自定义处理器或类似的设备上进行验证的。如果要发送HTTP错误代码,只需添加头Exchange.HTTP\u RESP

我正在使用camel REST-DSL组件开发REST服务。我成功地发送了快乐路径的JSON请求,并使用(REST DSL和camel servlet)组合在同一条路径上获得响应。现在,随着我们向前推进,客户机可能发送的Rest服务请求没有足够的值或无效的有效请求,现在我正在寻找在请求无效时从Rest DSL发送400状态代码作为响应的方法


请就如何实现这一点提供建议。

我假设您是在自定义处理器或类似的设备上进行验证的。如果要发送HTTP错误代码,只需添加头Exchange.HTTP\u RESPONSE\u代码

例如:exchange.getIn().setHeader(exchange.HTTP\u RESPONSE\u代码,400)

其性能可能取决于您使用的发动机。正如文档所述,它应该与servlet引擎一起工作:


根据Pierre Alban的建议,您可以在处理器或服务类中验证有效负载,并在处理器中设置正确的响应代码和消息

另一种方法是从验证器方法抛出异常,并让路由生成器处理该异常。大概是这样的:

onException(ValidationException.class)
    .handled(true)      
    .setHeader(Exchange.HTTP_RESPONSE_CODE, constant(400))
    .setHeader(Exchange.CONTENT_TYPE, constant("text/plain"))
    .setBody(exceptionMessage());

您是否要进行一些处理,然后基于此需要发送无效响应?如果是这样的话,那么皮埃尔·阿尔班的答复就行了。或者,当发生特定错误场景时,您是否需要发送无效响应?请更正Naveen,因此我将验证输入,如果验证失败,我需要发送400状态码的响应。谢谢,工作正常!一个观察结果是,我们需要避免任何可能发生的异常,就像我收到异常一样,Camel Servlet发送500个状态代码-表示内部服务器错误。我认为您可以使用异常策略,并在需要时更改其他状态代码和响应的标题。注意,在
常量(400)中包装
400
导致此功能不起作用,至少使用REST组件