当前位置: 首页 > news >正文

Springboot 设置统一的请求返回格式

现在开发过程中主要采用前后端分离的方式进行开发测试,也就是前端封装请求,后端提供标准的API接口服务。一般现在json 格式受到开发者们的青睐,学习过程中我们可以设置接口的返回类型,那么怎么做到设置统一的返回格式呢?以下是在项目开发过程中一般的模式标准:

1、一般springboot 我们使用 SpringBoot进行开发时,当我们引入 spring-boot-starter-web场景启动器后,该场景中就包含了 jackson依赖,不需要再额外导入,并且默认开启了注解扫描驱动;但是springmvc 则 引入支持json 的jar 

2、请求Controller ,设置json 格式的请求,一般使用RESTController 注解,这个注解s是 @Controller和 @ResponseBody注解的结合体,具有相同的作用,该注解只能标志在类上。

3、封装统一的返回对象格式,一般我们有几个关键项,code,msg,data ,如下:

public class ResponseResult<T> {
 
    /**
     * 状态码
     */
    private Integer code;
 
    /**
     * 提示信息,如果有错误时,前端可以获取该字段进行提示
     */
    private String msg;
 
    /**
     * 返回的结果数据
     */
    private T data;
 
    private ResponseResult() {
 
    }
 
    public ResponseResult(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }
 
    public ResponseResult(Integer code, String msg, T data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }
 
    public Integer getCode() {
        return code;
    }
 
    public void setCode(Integer code) {
        this.code = code;
    }
 
    public String getMsg() {
        return msg;
    }
 
    public void setMsg(String msg) {
        this.msg = msg;
    }
 
    public T getData() {
        return data;
    }
 
    public void setData(T data) {
        this.data = data;
    }
 
}

-----------------使用枚举设置返回状态码及已知类型----------------

public enum ResultCode {
    /**
     * 通用状态码
     */
    SUCCESS(1,"OK"),
    FAILED(-1,"FAIL"),
    /*
    参数错误状态码
     */
    PARAM_IS_INVAlID(101,"参数无效"),
    PARAM_IS_BLANK(101,"参数为空"),
    /* 用户错误  201 - 299  */
    USER_NOT_LOGIN(201,"未登录"),
    USER_NOT_EXIST(202,"用户不存在"),
    USER_LOGIN_ERROR(203,"登陆失败,账号或者密码有误"),
    NOT_PERMISSION(204,"无权限访问"),
    /* 业务错误 301 - 399*/
    DATA_NOT_FOUND(301,"没有数据");
 
    //返回状态码
    private Integer code;
 
    //返回消息
    private String msg;
 
    private ResultCode() {
    
    }
    
    ResultCode(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }
 
    public Integer getCode() {
        return code;
    }
 
    public void setCode(Integer code) {
        this.code = code;
    }
 
    public String getMsg() {
        return msg;
    }
 
    public void setMsg(String msg) {
        this.msg = msg;
    }
}

通过在ResponseResult添加一般的返回方法设置类

public static <T> ResponseResult<T> setCommonStatusAndData(ResultCode resultCode, T data){
    return new ResponseResult<>(resultCode.getCode(), resultCode.getMsg(),data);
}
 
public static ResponseResult setCommonStatusNoData(ResultCode resultCode){
    return new ResponseResult<>(resultCode.getCode(), resultCode.getMsg());
}
我们的开发接口服务时可以进行使用一般

public ResponseResult<T> getApi(输入参数){

    。。。。。。。。。。。。。。。。。

    return new ResponseResult<>(code, msg, data);

    //或者使用

    return ResponseResult.setCommonStatusAndData(ResultCode.SUCCESS,user)

}

http://www.lryc.cn/news/126441.html

相关文章:

  • logstash日志换行处理小解
  • openpnp - 做一个抛料盒
  • 数据结构——单链表的实现(c语言版)
  • 【计算机组成原理】24王道考研笔记——第四章 指令系统
  • C#使用FileInfo和DirectoryInfo类来执行文件和文件夹操作
  • 每日一学——TCP/IP参考模型
  • LAXCUS分布式操作系统:技术创新引领高性能计算与人工智能新时代
  • 两只小企鹅(Python实现)
  • Linux | 使用wget命令调用服务接口
  • POJ Prime Path 埃氏筛法+广度优先搜索
  • React React Native
  • 分布式定时任务系列5:XXL-job中blockingQueue的应用
  • QT网络编程之TCP
  • 《游戏编程模式》学习笔记(四) 观察者模式 Observer Pattern
  • 前端一键升级 package.json里面的依赖包管理
  • 当速度很重要时:使用 Hazelcast 和 Redpanda 进行实时流处理
  • 筛法求欧拉函数
  • consul限制注册的ip
  • 用AI攻克“智能文字识别创新赛题”,这场大学生竞赛掀起了什么风潮?
  • EJB基本概念和使用
  • 神经网络基础-神经网络补充概念-09-m个样本的梯度下降
  • 分布式 - 消息队列Kafka:Kafka消费者分区再均衡(Rebalance)
  • BIO、NIO和AIO
  • 理解 Go 中的切片:append 操作的深入分析(篇1)
  • 由于找不到mfc140u.dll,无法继续执行代码怎么修复?
  • 【0.1】lubancat鲁班猫4刷入debian网络ping 域名不通问题
  • KafkaStream:基本使用
  • 【数据结构】二叉树
  • 基于灰狼优化(GWO)、帝国竞争算法(ICA)和粒子群优化(PSO)对梯度下降法训练的神经网络的权值进行了改进(Matlab代码实现)
  • jenkins自动化构建保姆级教程(持续更新中)