Camel rest-dsl发送400状态代码

Leo*_*nce 4 rest apache-camel fuseesb

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

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

小智 8

我假设您正在使用自定义处理器或类似的东西进行验证.如果要发送HTTP错误代码,只需添加标题Exchange.HTTP_RESPONSE_CODE.

例如:exchange.getIn().setHeader(Exchange.HTTP_RESPONSE_CODE,400);

行为可能取决于您使用的引擎.正如文档所说,它应该与servlet引擎一起使用:

  • 我认为您可以使用异常策略并根据需要更改其他状态代码和响应的标头. (2认同)

小智 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());
Run Code Online (Sandbox Code Playgroud)