为什么 JAX-RS 不支持开箱即用的 423 错误代码?

Why does JAX-RS doesn't support the 423 error code out-of-the-box?

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

谁能告诉我为什么?

我在 Internet 上搜索但没有找到任何相关主题。

来自 Response.Status 文档:

Commonly used status codes defined by HTTP, see HTTP/1.1 documentation for the complete list. Additional status codes can be added by applications by creating an implementation of Response.StatusType.

423 status code is defined as part of WebDAV in the RFC 4918,它是 HTTP 协议的扩展

一旦423 is registered in IANA,它可以被认为是一个标准的状态代码,但它没有在当前定义HTTP/1.1协议的任何文档中定义:


虽然有很多方法可以 return 423。最简单的是:

return Response.status(423).build();

或者,您可以按照 Response.Status 文档中的建议实施 Response.StatusType

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它:

return Response.status(new LockedStatusType()).build();