Camel rest-dsl发送400状态代码

时间:2014-10-29 13:30:42

标签: rest apache-camel fuseesb

我正在使用camel REST-DSL [in camel documentation]组件开发REST服务。我成功发送了快乐路径的JSON请求,并使用(Rest-DSL和camel servlet)组合获得相同的响应。现在,当我们继续前进时,客户端可能会发送没有足够值或无效有效请求的Rest Service请求,现在我正在寻找在请求无效时从REST DSL发送400状态代码的方法。

请告知实现此目的的方法。

2 个答案:

答案 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());