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

时间:2019-01-09 14:53:56

标签: jax-rs error-code

我使用的是JAX-RS 2.1,发现Response类枚举缺少423错误代码。

有人可以向我解释为什么吗?

我在互联网上搜索,但未找到任何相关线索。

1 个答案:

答案 0 :(得分:1)

摘自Response.Status文档:

  

HTTP定义的常用状态代码,有关完整列表,请参见HTTP / 1.1文档。应用程序可以通过创建Response.StatusType的实现来添加其他状态代码。

状态423被定义为WebDAVRFC 4918的一部分,它是HTTP协议的扩展名

一旦423registered in IANA,就可以将其视为标准状态代码,但是当前定义HTTP / 1.1协议的任何文档中都未定义它:


尽管有很多方法可以返回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();