JAVA快餐 7 spring boot 接口返回值封装
概述
rest接口会返回各种各样的数据,如果对接口的格式不加约束,很容易造成混乱。
在实际项目中,一般会把结果放在一个封装类中,封装类中包含http状态值,状态消息,以及实际的数据。
本篇实现一个结果的封装类。
封装类代码
Result.java(如果没有安装lombok插件,需要手动生成getter和setter)
package com.qikegu.demo.common.util; import lombok.Data; import javax.annotation.sql.DataSourceDefinition; import java.io.Serializable; /** * 返回结果基础类型 * * @author zhangweijie * * @param <T> */ @Data public class Result<T> implements Serializable { private static final long serialVersionUID = 2102865241133691258L; private static final int SUCCESS_CODE = 0; /** * 封装数据结果 */ private T data; /** * 接口返回错误码 */ private int code; /** * 接口是否异常 */ private boolean success = false; /** * 接口调用错误信息 */ private String message; /** * 是否调用成功 */ public boolean isSuccess() { return success; } /** * 成功结果 * * @author zhangweijie * @return */ public static <T> Result<T> buildSuccessResult() { Result<T> result = new Result<>(); result.code = SUCCESS_CODE; result.success = true; return result; } /** * 成功结果 * * @author zhangweijie * @param t * @return */ public static <T> Result<T> buildSuccessResult(T t) { Result<T> result = new Result<>(); result.code = SUCCESS_CODE; result.success = true; result.setData(t); return result; } /** * 失败结果 * * @author zhangweijie * @param code 响应编码 * @return */ public static <T> Result<T> buildFailureResult(int code) { Result<T> result = new Result<>(); result.code = code; result.success = false; return result; } /** * 失败结果 * * @author zhangweijie * @param msg 响应消息 * @param code 响应编码 * @return */ public static <T> Result<T> buildFailureResult(int code, String msg) { Result<T> result = new Result<>(); result.code = code; result.message = msg; result.success = false; return result; } }
解释
代码应该很好懂,主要是3个成员:
- code – 状态值,应该对应于http的状态值(200,404等等)
- messsage – 状态消息,如“页面未找到”
- success – 状态,服务端请求会用到
- data – 泛型数据,通常是一个hashmap,可放入键值对
添加代码
项目增加文件如下图
Result.java文件已经在上面说明过。
控制
控制类return调用成功或失败的封装方法:
@GetMapping ("/key") public Result key(String dateStart,String dateEnd){ if(dateStart==null){ return Result.buildFailureResult(400,"StartTime不能为空"); }else { return Result.buildSuccessResult(h5ViewsService.selectKey(dateStart, dateEnd)); } }
解释
请求失败:Result.buildFailureResult();
请求成功:Result.buildSuccessResult();
运行
成功的结果
{ "data": [ { "id": 2, "count": 2, "date": "2020-10-30T03:07:58.000+00:00" } ], "code": 0, "success": true, "message": null }
请求失败的结果
{ "data": null, "code": 400, "success": false, "message": "StartTime不能为空" }
教程原文章:https://www.qikegu.com/docs/2563