关于如何在javaweb 中返回准确的响应状态码

问题

今天使用springboot进行项目框架的搭建,返回json数据给前端,在对响应返回的格式上面自己在思考需不要返回一个精确的响应状态码,该如何精确返回,势必需要在controller层获取httpresponse对象,是否有什么好的解决办法

解决

  • 通过拦截器,进行拦截请求的状态。前后端分离项目使用这个办法不好获取状态值
  • 通过定义请求域基类,

    public class BaseCommand {
    
    protected  HttpServletRequest httpServletRequest;
    
    protected  HttpServletResponse httpServletResponse;
    
    protected  HttpSession httpSession;
    
    @ModelAttribute
    public void setContext (HttpServletRequest httpServletRequest,
                      HttpServletResponse httpServletResponse, HttpSession httpSession) {
        this.httpServletRequest = httpServletRequest;
        this.httpServletResponse = httpServletResponse;
        this.httpSession = this.httpServletRequest.getSession();
        }
    }
    

    @ModelAttribute注解作用是,每次请求执行该方法,对每一个controller都继承该方法,就可以实现在controller最少代码获取到httpresponse对象。注意该注解不能加到构造方法上面。

总结

在对这个状态码返回的问题上面,不进行异常捕获,那么会返回准确的状态码,而且是否需要返回还是要看前端的需求,主要看前端的设计,根据前端需要将错误显示到什么粒度来决定

你可能感兴趣的:(工作)