SpringBoot统一接口返回的标准格式R.java
1、分析
前后端分离的开发方式,通过swagger来进行接口测试。
每个开发者,对自己的代码都有一套自己的逻辑和哲学,返回值就千变万化。接口的调用者,对于返回值的不理解。
解决方法:统一返回处理
2、格式
# 成功的状态
{
code:200,
data:{
id:"1",name:"yykkk"},
message:"success"
}
# 失败
{
code:401,
data:"",
message:"用户名和账号有误"
}
{
code:500,
data:"",
message:"服务器出错!!"
}
3、基础封装认识
3.1 封装
package com.example.common;
import lombok.Data;
@Data
public class R {
// 返回编号
private Integer code;
// 返回数据
private Object data;
// 返回信息
private String message;
}
3.2 使用
package com.example.controller;
import com.example.common.R;
import com.example.service.RegService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Slf4j
public class RegController {
@Autowired
private RegService regService;
// 注册
@GetMapping("/reg")
public R reguser(){
// 1、注册用户
log.info("新用户注册");
// userService.save(user);
// 2、发送短信
log.info("新用户注册");
// messageService.sendMsg();
regService.sendMsg();
// 3、添加积分
log.info("新用户注册");
// scoreService.addScore(user);
regService.addScore();
R r = new R();
r.setCode(200);
r.setData("OK");
r.setMessage("注册成功");
return r;
}
}
3.3 启动
访问:http://localhost:8080/reg,结果如下:
{
"code":200,"data":"ok","message":"注册成功!"}
3.4 问题
频繁的创建R类;第一会增加内存开销,第二:代码臃肿和冗余。
4、静态方法封装
4.1优化
用静态方法方法去优化和封装
4.2 实现
package com.example.common;
import lombok.Data;
@Data
public class R {
// 返回编号
private Integer code;
// 返回数据
private Object data;
// 返回信息
private String message;
public static R success(Object