统一响应体包括code、msg和data三个标准的键值对。
这里直接返回这样的数据应该不太标准,按道理这个json应该放在data里面
编写统一响应体
项目新建common包,里面新建一个Response或者R的class文件
里面编写代码为
@Data
public class R<T> {
public int code;
public String msg;
public T data;
//第一种形式
public R(int code, String msg){
this.code=code;
this.msg=msg;
}
public R(int code, T data){
this.code=code;
this.data=data;
}
public R(int code,String msg,T data){
this.code=code;
this.msg=msg;
this.data=data;
}
public R() {
}
// 第二种形式
public static<T> R<T> success(T data){
R<T> r=new R<T>();
r.code=1;
r.msg="成功";
r.data=data;
return r;
}
public static<T> R<T> error(String msg){
R<T> r=new R<T>();
r.code=0;
r.msg=msg;
return r;
}
}
(这里若看不明白,需要学习下泛型和static的用法)
第一种形式可以自定义msg、code和data的样式。第二种code、msg、data大多定死。
改造之前写的get、post的请求方法为
@RestController //为Response+Controller结合,其中Response告诉接口返回json数据,如果没有数据返回形式非map,按照text形式返回数据
@RequestMapping("/test") //规定统一前缀
public class ApiTestController {
Map<Object,Object> map = new HashMap<>();
@GetMapping("/testGet") //GetMapping定义方法为get请求,路由为/test/testGet
public R getMethod(int page, int pageSize, String name){**//替换之前的Map<Object,Object>为R**
//定义传参为page、pageSize和name为该接口的传参请求
map.put("page",page);
map.put("pageSize",pageSize);
map.put("name",name);
return new R(1,"成功",map); **//替换之前的return map为return new R(1,"成功",map) **
// return name;
}
@PostMapping("/testPost") //PostMapping定义方法为post请求,路由为/test/testPost
public R postMethod(@RequestBody Map<Object,Object> map){**//替换之前的Map<Object,Object>为R**
return R.success(map); **//替换之前的return map为return R.success(1,"成功",map) **
}
@PostMapping("/testPost/{id}") //PostMapping定义方法为post请求,路由为/test/testPost/路径
public R postPathVariable(@PathVariable int id){**//替换之前的Map<Object,Object>为R**
map.put("id",id);
return new R(1,map); **//替换之前的return map为return new R(1,map)**
}
}
postaman查看返回接口样式