SpringBoot秒杀系统实战02-优雅代码编写之封装json输出
2020-07-14 06:02
363 查看
搭建起了SpringBoot环境之后,那么就可以开启项目了,我们需要考虑优雅代码编写。
我们知道MVC模式Controller类里面一般有两大返回值:
- rest api的json输出
- 页面
一般来说,服务端和客户端要做一个接口的约定。
一般封装的json数据代表意义:
[code]{ "code":0 //500100代表库存不足 "msg":"success" //代表code对应的相应信息 "data":"data" //可能是对象,也可能是一个数组 }
1.新建result包,新建Result结果的封装类。
注意:因为返回的data不知道是什么类型,那么定义一个泛型。
[code]public class Result { private int code; private String msg; private T data; //success private Result(T data) { this.code=0; this.msg=”success”; this.data=data; } //error private Result(CodeMsg cm) { if(cm==null) { return; } this.code=cm.getCode(); this.msg=cm.getMsg(); } //成功 public static <T> Result<T> success(T data){ return new Result<T>(data) ; } // 失败 public static <T> Result<T> error(CodeMsg sm) {//CodeMsg包含了code和msg return new Result<T>(sm); } public int getCode() { return code; } public void setCode(int 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; }
新建CodeMsg,对处理结果成功或者错误的情况做一个CodeMsg的封装。成功的时候,只返回数据。失败的话,那么就返回CodeMsg。(里面包含错误码以及错误信息)
[code]/** 成功的时候,只返回数据。 失败的话,那么就返回CodeMsg。(里面包含错误码以及错误信息) * */ public class CodeMsg { private int code; private String msg; //通用异常 public static CodeMsg SUCCESS=new CodeMsg(0,”success”); public static CodeMsg SERVER_ERROR=new CodeMsg(500100,”服务端异常!”); public static CodeMsg BIND_ERROR=new CodeMsg(500101,”参数校验异常:%s”); public static CodeMsg REQUEST_ILLEAGAL=new CodeMsg(500102,”非法请求!”); public static CodeMsg MIAOSHA_FAIL=new CodeMsg(500103,”秒杀失败!”); public static CodeMsg ACCESS_LIMIT=new CodeMsg(500104,”达到访问限制次数,访问太频繁!”); //登录模块异常 public static CodeMsg SESSION_ERROR=new CodeMsg(500210,”session失效!”); public static CodeMsg PASSWORD_EMPTY=new CodeMsg(500211,”密码不能为空!”); public static CodeMsg MOBILE_EMPTY=new CodeMsg(500212,”手机号不能为空!”); public static CodeMsg MOBILE_ERROR=new CodeMsg(500213,”手机号格式错误!”); public static CodeMsg MOBILE_NOTEXIST=new CodeMsg(500214,”手机号号码不存在!”); public static CodeMsg PASSWORD_ERROR=new CodeMsg(500215,”密码错误!”); //订单模块异常 public static CodeMsg ORDER_NOT_EXIST=new CodeMsg(500410,”订单不存在!”); //秒杀模块异常 public static CodeMsg MIAOSHA_OVER_ERROR=new CodeMsg(500500,”商品秒杀完毕,库存不足!”); public static CodeMsg REPEATE_MIAOSHA=new CodeMsg(500500,”不能重复秒杀!”); public CodeMsg(int code,String msg) { this.code=code; this.msg=msg; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } //返回一个带参数的错误码 public CodeMsg fillArgs(Object…args) {//变参 int code=this.code; //message是填充了参数的message String message=String.format(this.msg, args); return new CodeMsg(code,message); } @Override public String toString() { return “CodeMsg”; } }Controller里面的代码,使用了封装类之后的返回效果更赏心悦目。注意:@ResponseBody注解,如果返回给前端json数据的时候,需要使用该注解!!!
[code] [code]@Controller @RequestMapping(“/demo”)//注意!!!加了一个路径 public class DemoController { @RequestMapping(“/”) @ResponseBody public String home() { return “hello world”; } @RequestMapping(“/hello”) @ResponseBody public Result hello() {//0代表成功 return Result.success(“hello sss”); } @RequestMapping(“/helloError”) @ResponseBody public Result helloError() {//0代表成功 return Result.error(CodeMsg.SERVER_ERROR); } }
成功显示:
相关文章推荐
- 【SpringBoot商城秒杀系统项目实战02】优雅代码编写之封装json输出
- 【SpringBoot商城秒杀系统项目实战07】通用缓存Key的设计与封装
- SpringBoot秒杀系统实战07-通用缓存Key的设计与封装
- 【系统学习SpringBoot】SpringBoot 对象转JSON输出
- SpringBoot秒杀系统实战12-商品列表页
- 【SpringBoot商城秒杀系统项目实战06】安装与集成redis
- 【SpringBoot商城秒杀系统项目实战21】高并发秒杀系统接口优化 RabbitMQ异步下单
- (三)基于SpringBoot实战Java秒杀高并发系统Controller层开发(超详细)
- SpringBoot秒杀系统实战14-秒杀功能的实现(秒杀业务逻辑处理)
- (二)基于SpringBoot实战Java秒杀高并发系统Service开发(超详细)
- SpringBoot秒杀系统实战11-分布式Session
- (一)基于SpringBoot实战Java秒杀高并发系统DAO开发(超详细)
- SpringBoot秒杀系统实战13-秒杀商品详情页+秒杀倒计时功能实现
- 【SpringBoot商城秒杀系统项目实战22】安全优化 秒杀接口地址隐藏
- SpringBoot秒杀系统实战10-JSR303参数校验+全局异常处理
- SpringBoot秒杀系统实战19-秒杀静态化+订单详情静态化
- SpringBoot秒杀系统实战09-使用两次MD5实现登录功能
- SpringBoot秒杀系统实战18-页面优化技术-商品详情页面静态化(前后端分离)...
- SpringBoot秒杀系统实战16-使用JMeter压测秒杀系统(秒杀接口的压测及结果)...
- SSM实战——秒杀系统之DAO层实体定义、接口设计、mybatis映射文件编写、整合Spring与Mybatis