首页 > 解决方案 > 为什么 JAX-RS 不支持开箱即用的 423 错误代码?

问题描述

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

谁能向我解释为什么?

我在互联网上搜索但没有找到任何相关的线程。

标签: jax-rserror-code

解决方案


Response.Status文档中:

HTTP 定义的常用状态码,完整列表参见 HTTP/1.1 文档。应用程序可以通过创建Response.StatusType.

状态代码在RFC 4918423中定义为WebDAV的一部分,它是HTTP 协议的扩展

一旦在 IANA423中注册,它可以被视为标准状态码,但在当前定义 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();

推荐阅读