[英]How to set HTTP Status code reason with Apache Camel REST DSL (Servlet/Restlet)
[英]Unable to set status reason in http response header in Restlet Web service
我正在使用restlet框架制作REST Web服务。 我正在使用org.restlet 2.3.1 jar
我必须自定义错误响应标头。 根据具体问题,我必须在响应头中显示响应状态代码和状态原因。 为此,我制作了一个扩展StatusService并覆盖toStatus方法的类。 我检查了throwable,并相应地设置了状态。 请参考下面的示例代码。
@Override
public Status toStatus(Throwable throwable, Request request,
Response response) {
if (throwable != null) {
return new Status(500,throwable, "DD","DD");
}
return super.toStatus(throwable, request, response);
}
因此,只要从restlet代码抛出异常,就会在此处捕获该异常并返回错误响应。 错误响应的正确状态码为500,但状态原因不正确。 而不是DD,它显示内部服务器错误。
HTTP / 1.1 500内部服务器错误
是否有一些但我正在使用的restlet框架版本。 请帮忙。
我认为您无法更改预定义HTTP状态代码的原因短语。 它们由HTTP规范本身定义...
如果要向客户端提供其他提示,则应使用响应有效负载并覆盖状态服务的toRepresentation
方法。
以下链接提供了有关如何执行此操作的更多详细信息: https : //templth.wordpress.com/2015/02/27/exception-handling-with-restlet/ 。
编辑
根据要求,您还可以在自定义响应标头中发送有关错误消息的一些提示,如下所述:
@Override
public Status toStatus(Throwable throwable, Resource resource) {
Status status = Status.SERVER_ERROR_INTERNAL;
Response response = resource.getResponse();
Series<Header> responseHeaders = response.getHeaders();
responseHeaders.add(new Header(
"Some-Header", "my custom message"));
return status;
}
希望对您有帮助,蒂埃里
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.