SpringBoot怎么统一JSON信息返回
这篇文章主要介绍“SpringBoot怎么统一JSON信息返回”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot怎么统一JSON信息返回”文章能帮助大家解决问题。
调用后端服务后的返回结果有多种类型,如:String
,Integer
,Boolean
,List
,Map
等,在一个项目中,为了保持统一性,我们方法返回结果可以全部使用JSON
数据格式,如下:
{ "code":200, "msg":"成功", "data":"JSON数据"}
其中code
是本次请求处理结果对应的状态码,msg
是状态码对应的解释信息,data
是要返回的数据内容,可以是任意一个对象。
封装响应信息对象
public class ResponseEntity<T> implements Serializable { private static final long serialVersionUID = 3595741978061989861L; private Integer code;//状态码 private String msg;//状态码对应信息 private T 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; }}
状态码,Http
请求状态码有多种,使用枚举列举,如下示例:
public enum ResponseEnum { SUCCESS(200, "成功"), FAIL(-1, "失败"), ERROR_400(400, "错误的请求"), ERROR_404(404, "访问资源不存在"), ERROR_500(500, "服务器异常"); private Integer code; private String msg; ResponseEnum(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; }}
创建一个公共类,生成响应对象
public class ResponseUtil { public static ResponseEntity success(Object object){ ResponseEntity resp = new ResponseEntity(); resp.setCode(ResponseEnum.SUCCESS.getCode()); resp.setMsg(ResponseEnum.SUCCESS.getMsg()); resp.setData(object); return resp; } public static ResponseEntity success(){ return success(null); } public static ResponseEntity error(ResponseEnum responseEnum){ ResponseEntity resp = new ResponseEntity(); resp.setCode(responseEnum.getCode()); resp.setMsg(responseEnum.getMsg()); return resp; }}
Spring
中的控制器可以用 @Controller
和 @RestController
注解来声明,其中@Controller
标识当前控制器是SpringMvc
的控制器,要返回JSON
对象数据,需要和@ResponseBody
注解联合使用;@RestController
主要用来构建Restful
风格接口,返回客户端的请求数据,相当于同时使用@Controller
和@ResponseBody
注解。
(推荐课程:Spring教程)
创建Pojo
包及对应的实体类
public class DemoEntity { private Integer id; private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; }}
创建控制器
@Controller
@Controllerpublic class DemoController { @RequestMapping(value = "/users", method= RequestMethod.GET) @ResponseBody public ResponseEntity users(){ List<DemoEntity> list = new ArrayList<DemoEntity>(); DemoEntity demo = new DemoEntity(); demo.setId(1); demo.setName("蜗牛"); list.add(demo); DemoEntity demo1 = new DemoEntity(); demo1.setId(2); demo1.setName("葡萄"); list.add(demo1); return ResponseUtil.success(list); }}
测试:启动服务后,在浏览器地址栏输入http://localhost:8080/users
,可以看到页面上的输出信息
{"code":200,"msg":"成功","data":[{"id":1,"name":"蜗牛"},{"id":2,"name":"葡萄"}]}
@RestController
@RestControllerpublic class DemoRestController { @RequestMapping(value = "/users1", method= RequestMethod.GET) public ResponseEntity users(){ List<DemoEntity> list = new ArrayList<DemoEntity>(); DemoEntity demo = new DemoEntity(); demo.setId(1); demo.setName("蜗牛"); list.add(demo); DemoEntity demo1 = new DemoEntity(); demo1.setId(2); demo1.setName("葡萄"); list.add(demo1); return ResponseUtil.success(list); }}
请求后也能看到如上的结果。
关于“SpringBoot怎么统一JSON信息返回”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341