我是JAX-RS的新手,并且仍在学习,所以我的问题可能有点幼稚,所以请忍受它:)
我一直在经历各种问题,以解决HTTP响应的"错误代码"的问题。。我发现,只要一个人不想读书,他就可以在响应中返回4xx状态代码。
我也通过了此链接RFS 2616也是W3
我想知道是否有任何一般实践可以返回标准HTTP响应状态代码以外的自定义错误代码。
例如,如果在POST请求中,请求通过用户ID获取用户信息并返回错误,如果UserID无效/不存在。在这种情况下,HTTP状态422听起来很闲置。但是,如果需要详细的错误描述,则可以自定义错误,例如40xx,其中XX值是XX值,而不是将HTTP错误返回给客户端。
同样可以根据客户端定义40xx并返回?(请求中具有正确的语法)
4001-用户ID无效
4002-发帖ID无效
等。
或我应该返回4xx状态代码,在响应主体中添加自己的代码以获取更多错误详细信息?
如果您正在开发不会公开的内部系统,则可以使用自定义代码。另一方面
在JAX-RS中,您可以创建自己的状态(或覆盖标准状态的原因短语),例如:
public static class CustomBadRequestType implements Response.StatusType {
@Override
public int getStatusCode() {
return 400;
}
@Override
public String getReasonPhrase() {
return "My Reason";
}
@Override
public Response.Status.Family getFamily() {
return Response.Status.Family.CLIENT_ERROR;
}
}
,然后将状态设置为响应。ResponseBuilder:
Response.status(new CustomBadRequestType()).build();
一个人可以使用更多自定义代码扩展现有界面(并将其保留)如下:
:public enum CustomResponseStatus implements Response.StatusType {
OK(Response.Status.OK.getStatusCode(), "OK"),
CREATED(Response.Status.CREATED.getStatusCode(), "Created"),
INVALID_INPUTS(419, "Invalid inputs");
}
您可以将CustomResponsEstatus代码设置为响应对象的一部分,如下
ResponseBuilder.status(CustomResponseStatus.INVALID_INPUTS).build();
如果自定义状态在整数102和599(包含)之间,也可以选择使用int
值设置状态:
ResponseBuilder.status(451).build();
实际上,即使使用自定义状态代码,也建议使用标准组(1xx,2xx,3xx,4xx,5xx)。(提供的示例可能是4xx客户端错误。)