为什么 JAX-RS 不支持现成的 423 错误代码?



我使用的是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();

最新更新