我使用的是JAX-RS 2.1,发现Response
类枚举缺少423
错误代码。
有人能向我解释为什么吗?
我在网上搜索了一下,但没有找到任何相关的线索。
来自Response.Status
文档:
HTTP定义的常用状态代码,请参阅HTTP/1.1文档以获取完整列表。应用程序可以通过创建
Response.StatusType
的实现来添加其他状态代码。
423
状态代码在RFC 4918中被定义为WebDAV的一部分,它是HTTP协议的扩展。
一旦423
在IANA中注册,它就可以被视为标准状态代码,但目前定义HTTP/1.1协议的任何文档中都没有定义它:
- RFC 7230:消息语法和路由
- RFC 7231:语义和内容
- RFC 7232:有条件请求
- RFC 7233:范围请求
- RFC 7234:缓存
- RFC 7235:身份验证
不过有很多方法可以返回423
。最简单的是:
return Response.status(423).build();
或者,您可以实现Response.StatusType
,如Response.Status
文档中所建议的:
public static class LockedStatusType implements Response.StatusType {
@Override
public int getStatusCode() {
return 423;
}
@Override
public String getReasonPhrase() {
return "Locked";
}
@Override
public Response.Status.Family getFamily() {
return Response.Status.Family.CLIENT_ERROR;
}
}
然后返回:
return Response.status(new LockedStatusType()).build();