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 { /** * 成功返回 * @param object 返回数据 * @return */ 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; } /** * 成功返回 无数据 * @return */ public static responseentity success(){ return success(null); } /** * 失败返回 * @param responseenum 响应标识 * @return */ 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
注解。
创建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
@controller public 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
@restcontroller public 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); } }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论