我的目的是使用Spring MVC返回自定义http错误代码,例如:601,602 ...以便客户可以清楚地区分错误。
@ExceptionHandler(Exception.class)
public @ResponseBody
ErrorAlmacen generalExceptionHandler(Exception exception, HttpServletResponse response) {
response.setStatus(601);
ErrorAlmacen error = new ErrorAlmacen();
...
return error;
}
但是当我的@ExceptionHandler在respose对象中设置这些值时,Spring会以某种方式转换为200。
是否有可能做我正在尝试的事情,或者Spring不会允许我这样做?
答案 0 :(得分:0)
您要做的是 不 可以完成。
HTTP是一种众所周知的协议,无法根据您自己的用途进行重新设计。
协议是“语言”,是双方意识到的规则,现在如何“说话”并相互沟通。
将Web应用程序部署到Web服务器时,该Web服务器可以响应来自客户端的HTTP请求,客户端将是最终用户的浏览器。并且该浏览器期望仅接收200个代码以获得OK响应,并且没有其他HTTP代码用于OK批准。
您的浏览器知道要解决状态200而不是您希望使用的602.
这就是构建浏览器的方式,并且您无法更改协议。