美文网首页
SpringBoot统一api返回风格

SpringBoot统一api返回风格

作者: wzapp | 来源:发表于2021-03-06 14:16 被阅读0次

    学过上一章的人也许发现问题了,接口返回的格式基本都是固定的,例如

    {
        "code": 200,
        "msg": "",
        "data": "Object ....",
    }
    

    而我们的登陆却返回

    密码必须传!等等返回值
    

    显然我们的返回格式不符合常规开发,因为前台并不知道这是错误信息还是正确返回信息!

    所以我们简单封装一个返回类,代码如下

    添加base包,新建BaseResult类

    import lombok.Data;
    
    @Data
    public class BaseResult {
        private int code;//200=成功,否则失败
        private String msg;//失败时的提示信息
        private Object data;//成功返回的内容
    
        public BaseResult(int code, String msg, Object data) {
            this.code = code;
            this.msg = msg;
            this.data = data;
        }
    }
    

    在修改下登陆的controller

        @PostMapping("login")
        public BaseResult login(@RequestParam(value = "user", defaultValue = "") String user,
                                @RequestParam(value = "pass", defaultValue = "") String pass) {
            if (user.equals("")) return new BaseResult(400, "账号必须传!", "");
            if (pass.equals("")) return new BaseResult(400, "密码必须传!", "");
            User user1 = mapper.login(user, pass);
            if (user1 == null) return new BaseResult(500, "账号密码不正确!", "");
            user1.setPass("");
            return new BaseResult(200, "", user1);
        }
    

    接下来我们看下返回值

    {
        "code": 400,
        "msg": "密码必须传!",
        "data": ""
    }
    
    {
        "code": 200,
        "msg": "",
        "data": {
            "id": 1,
            "user": "wz",
            "pass": ""
        }
    }
    

    上边这种返回格式,前端就非常好解析

    http各个状态码的含义:由三位数字组成,第一位定义了状态码的类型

    2开头:(请求成功)表示成功处理了请求的状态代码

    200:(成功)服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。
    201:(已创建)请求成功并且服务器创建了新的资源
    202:(已接受)服务器已接受请求,但尚未处理
    203:(非授权信息)服务器已成功处理了请求,但返回的信息可能来自另一资源。
    204:(无内容)服务器成功处理了请求,但没有返回任何内容
    205:(重置内容)服务器成功处理了请求,但没有返回任何内容
    206:(部分内容)服务器成功处理了部分 GET 请求

    3开头:(请求被重定向)表示要完成请求,需要进一步操作。通常,这些状态代码用来重定向

    300:(多种选择)针对请求,服务器可执行多种操作。服务器可根据请求者(user agent)选择一项操作,或提供操作列表供请求者选择
    301:(永久移动)请求的网页已永久移动到新位置。服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新的位置
    302:(临时移动)服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求
    303:(查看其他位置)请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码
    304:(未修改)自从上次请求后,请求的网页未修改过。服务器返回此响应,不会返回网页内容
    305:(使用代理)请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应使用代理
    307:(临时重定向)服务器目前从不同位置的网页响应请求,但请求者继续使用原有位置来进行以后的请求

    4开头:(请求错误)这些状态码表示请求可能出错,妨碍了服务器的处理

    400:(错误请求)服务器不理解请求的语法
    401:(未授权)请求要求身份验证。对于需要登录的网页,服务器可能返回此响应
    403:(禁止)服务器拒绝请求
    404:(未找到)服务器找不到请求的网页
    405:(方法禁用)禁用请求中指定的方法
    406:(不接受)无法使用请求的内容特性响应请求的网页
    407:(需要代理授权)此状态代码与 401 (未授权)类似,但指定请求者应当授权使用代理
    408:(请求超时)服务器等候请求时发生超时
    409:(冲突)服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息
    410:(已删除)如果请求的资源已永久删除,服务器就会返回此响应
    411:(需要有效长度)服务器不接受不含有效内容长度标头字段的请求
    412:(未满足前提条件)服务器未满足请求者在请求中设置的其中一个前提条件
    413:(请求实体过大)服务器无法处理请求,因为请求实体过大,超出服务器的处理能力
    414:(请求的 URI 过长)请求的URI(通常为网址)过长,服务器无法处理
    415:(不支持的媒体类型)请求的格式不受请求页面的支持
    416:(请求范围不符合)如果页面无法提供请求的范围,则服务器返回此状态代码
    417:(未满足期望值)服务器未满足“期望”请求标头字段要求

    5开头:(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。

    500:(服务器内部错误)服务器遇到错误,无法完成请求
    501:(尚未实施)服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码
    502:(错误网关)服务器作为网关或代理,从上游服务器收到无效响应
    503:(服务不可用)服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态
    504:(网关超时)服务器作为网关或代理,但是没有及时从上游服务器收到请求
    505:(HTTP 版本不受支持)服务器不支持请求中所用的 HTTP 协议版本

    相关文章

      网友评论

          本文标题:SpringBoot统一api返回风格

          本文链接:https://www.haomeiwen.com/subject/utzjqltx.html