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


