【SpringBoot商城秒杀系统项目实战02】优雅代码编写之封装json输出

搭建起了SpringBoot环境之后,那么就可以开启项目了,我们需要考虑优雅代码编写。
我们知道MVC模式Controller类里面一般有两大返回值:

  • rest api的json输出
  • 页面

一般来说,服务端和客户端要做一个接口的约定。
一般封装的json数据代表意义:

	{
		"code":0      //500100代表库存不足
		"msg":"success"    //代表code对应的相应信息
		"data":"data" 			 //可能是对象,也可能是一个数组
	}

1.新建result包,新建Result结果的封装类。
在这里插入图片描述
注意:因为返回的data不知道是什么类型,那么定义一个泛型。

	public class Result<T> {
	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。(里面包含错误码以及错误信息)

/**
 * 
成功的时候,只返回数据。
失败的话,那么就返回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 [code=" + code + ", msg=" + msg + "]";
	}
	
}

Controller里面的代码,使用了封装类之后的返回效果更赏心悦目。注意:@ResponseBody注解,如果返回给前端json数据的时候,需要使用该注解!!!

	@Controller
	@RequestMapping("/demo")//注意!!!加了一个路径
	public class DemoController {	
	@RequestMapping("/")
	@ResponseBody
	public String home() {
		return "hello world";
	}
	@RequestMapping("/hello")
	@ResponseBody
	public Result<String> hello() {//0代表成功
		return Result.success("hello sss");
	}	
	@RequestMapping("/helloError")
	@ResponseBody
	public Result<String> helloError() {//0代表成功
		return Result.error(CodeMsg.SERVER_ERROR);
	}
	}

成功显示:
在这里插入图片描述

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
springboot 是一种基于 Java 开发的框架,用于快速搭建、开发和管理企业级的应用程序。通过使用springboot,开发人员可以轻松地创建可独立运行的、可执行的 Spring 应用程序,而不需要进行繁琐的配置。 在实战源码中,我们可以学习到如何使用 springboot 来管理项目。首先,我们需要了解如何搭建一个基本的 springboot 项目。我们可以通过 Maven 或者 Gradle 构建工具来初始化一个空的 springboot 项目,然后引入所需的依赖。 一旦项目搭建完毕,我们就可以开始开发。springboot 提供了许多功能和组件,如:控制器、服务层、持久层、数据访问对象等。我们可以使用这些组件来构建一个完整的应用程序。 在源码中,我们可以学习到如何使用控制器来处理 HTTP 请求和响应,如何使用服务层来封装业务逻辑,如何使用持久层来进行数据库访问等。同时,我们还可以学习到如何优化项目的性能、如何进行单元测试和集成测试等。 通过实战源码,我们可以深入理解 springboot 的核心原理和用法。我们可以学习到如何使用依赖注入、自动配置、模板引擎等特性,以及如何使用 springboot 提供的各种插件和扩展来简化开发工作。 总而言之,实战源码可以帮助我们快速掌握 springboot 的开发技能和项目管理能力。通过学习实战源码,我们可以提高自己的开发水平,并能够更加高效地开发和管理 Java 项目。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值