SpringBoot统一api返回风格的实现

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

{
 "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返回风格的实现的文章就介绍到这了,更多相关SpringBoot统一api返回内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Springboot集成knife4j实现风格化API文档

    POM引入插件 <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <!--在引用时请在maven中央仓库搜索最新版本号 --> <version>2.0.3</version> </dependency> 配置加载 package com.p

  • SpringBoot统一api返回风格的实现

    学过上一章的人也许发现问题了,接口返回的格式基本都是固定的,例如 { "code": 200, "msg": "", "data": "Object ....", } 而我们的登陆却返回 密码必须传!等等返回值 显然我们的返回格式不符合常规开发,因为前台并不知道这是错误信息还是正确返回信息! 所以我们简单封装一个返回类,代码如下 添加base包,新建BaseResult类 import lombok.Dat

  • SpringBoot 统一公共返回类的实现

    目录 项目结构 统一返回类使用 本文记录下如何在工程中,配置后台的统一公共返回类,这样做目的是为了统一返回信息,方便项目进行管理.使用技术:SpringBoot+Swagger+Lombok 项目结构 具体过程如下,在response文件夹下分别建立 CustomizeResultCode 接口,枚举类ResultCode 实现CustomizeResultCode 接口和Result类: 1 配置自定义返回类接口,该接口中包含 错误状态码和错误信息 public interface Custo

  • SpringBoot 统一请求返回的实现

    目前我们的返回是直接把实体类扔给请求方,这样很不友好,一方面没有统一的格式,二来请求方不知道请求成功与否,没有一个可以判断的东西,也没有说明性的返回. 本篇就来为所有接口提供一个统一的友好返回. 确定返回结构 首先,我们先确定好我们接口返回的格式是什么样的,然后再一步一步实现下面的. { "code": 200, "msg": "ok", "data": "" } code 字段表示状态码,调用方根据该码来

  • springboot统一接口返回数据的实现

    一,没有异常的情况,正常返回数据 希望接口统一返回的数据格式如下: { "status": 0, "msg": "成功", "data": null } 和接口数据对应的bean /** * 统一返回结果的实体 * @param <T> */ public class Result<T> implements Serializable { private static final long serial

  • 详解SpringBoot 统一后端返回格式的方法

    目录 为什么要对SpringBoot返回统一的标准格式 定义返回标准格式 定义返回对象 定义状态码 统一返回格式 高级实现方式 接口异常问题 SpringBoot为什么需要全局异常处理器 如何实现全局异常处理器 体验效果 全局异常接入返回的标准格式 首先我们来看看为什么要返回统一的标准格式? 为什么要对SpringBoot返回统一的标准格式 在默认情况下,SpringBoot的返回格式常见的有三种: 第一种:返回 String @GetMapping("/hello") public

  • SpringBoot统一接口返回及全局异常处理高级用法

    前言 现在大多数公司项目框架,基本都是属于前后端分离模式,这种模式会涉及到一个前后端对接问题,无论是对前端或者是后台服务,维护一套完善且规范的接口是非常有必要的,这样不仅能够提高对接效率,也可以让我的代码看起来更加简洁优雅. 修改前后最大的区别是我们不用在每个接口单独捕获异常,也不用在每个接口都要组装一遍返回参数,可以参考下面这张对比图: 一.SpringBoot不使用统一返回格式 默认情况下,SpringBoot会有如下三种返回情况. 1.1 使用字符串返回 @GetMapping("/get

  • SpringBoot中如何统一接口返回与全局异常处理详解

    目录 背景 统一接口返回 定义API返回码枚举类 定义正常响应的API统一返回体 定义异常响应的API统一返回体 编写包装返回结果的自定义注解 定义返回结果拦截器 WebMvc配置类拦截器注册者添加返回结果拦截器 编写响应体处理器 接口调用 测试结果 全局异常处理 编写自定义异常基类 编写自定义业务异常类 定义全局异常处理类 接口调用 测试结果 总结 背景 在分布式.微服务盛行的今天,绝大部分项目都采用的微服务框架,前后端分离方式.前端和后端进行交互,前端按照约定请求URL路径,并传入相关参数,

  • 详解SpringBoot如何统一后端返回格式

    目录 为什么要对SpringBoot返回统一的标准格式 第一种:返回 String 第二种:返回自定义对象 第三种:接口异常 定义返回标准格式 高级实现方式 接口异常问题 SpringBoot为什么需要全局异常处理器 体验效果 全局异常接入返回的标准格式 今天我们来聊一聊在基于SpringBoot前后端分离开发模式下,如何友好的返回统一的标准格式以及如何优雅的处理全局异常. 首先我们来看看为什么要返回统一的标准格式? 为什么要对SpringBoot返回统一的标准格式 在默认情况下,SpringB

  • .NetCore Web Api 利用ActionFilterAttribute统一接口返回值格式及问题解析

    .Net Core 同 Asp.Net MVC一样有几种过滤器,这里不再赘述每个过滤器的执行顺序与作用. 在实际项目开发过程中,统一API返回值格式对前端或第三方调用将是非常必要的,在.NetCore中我们可以通过ActionFilterAttribute来进行统一返回值的封装. 在封装之前我们需要考虑下面几个问题: 1,需要对哪些结果进行封装 我目前的做法是,只对ObjectResult进行封装,其他的类型:FileResult,ContentResult,EmptyResult,Redire

  • 详解SpringBoot如何实现统一后端返回格式

    目录 1.为什么要对SpringBoot返回统一的标准格式 1.1 返回String 1.2 返回自定义对象 1.3 接口异常 2.定义返回对象 3.定义状态码 4.统一返回格式 5.高级实现方式 5.1 ResponseBodyAdvice的源码 5.2 String类型判断 在前后端分离的项目中后端返回的格式一定要友好,不然会对前端的开发人员带来很多的工作量.那么SpringBoot如何做到统一的后端返回格式呢?今天我们一起来看看. 1.为什么要对SpringBoot返回统一的标准格式 在默

随机推荐