说明:在前后端分离的项目中,我们可以专注于后台代码的开发,前台拿数据只需要调用相应的接口即可,常用的后台返回的json串一般包含以下三种:
status
:状态码,message
:提示信息,data
:接口返回数据。
后台接口返回json格式封装类代码示例如下:
/**
* @Description:后台接口返回json格式封装类
* @Author :zks
* @Date :11:58 2020/9/8
*/
public class Result<T> implements Serializable {
//状态码
private Integer status;
//状态
private String message;
//返回封装数据
private T data;
public Result() {
}
public Result(Integer status) {
this.status = status;
}
public Result(Integer status, String message) {
this.status = status;
this.message = message;
}
public Result(Integer status, String message, T data) {
this.status = status;
this.message = message;
this.data = data;
}
//不返回数据构造方法
public Result(CodeEnum codeEnum) {
this.status = codeEnum.getCode();
this.message = codeEnum.getMessage();
}
//返回数据构造方法
public Result(CodeEnum codeEnum, T data) {
this(codeEnum);
this.data = data;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
//请求成功(不返回数据)
public static <T> Result <T> success(){
return new Result <T>(CodeEnum.SUCCESS);
}
//请求成功(返回数据)
public static <T> Result <T> success(T data){
return new Result <T>(CodeEnum.SUCCESS,data);
}
//参数格式不正确
public static <T> Result <T> badRequest(){
return new Result <T>(CodeEnum.BAD_REQUEST);
}
// .......可根据自己的需要往下延伸
@Override
public String toString() {
return "Result{" +
"status=" + status +
", message='" + message + '\'' +
", data=" + data +
'}';
}
}
状态码枚举类代码示例如下:
/**
* @Description:状态码枚举类
* @Author :zks
* @Date :14:00 2020/9/8
*/
public enum CodeEnum {
/**
* 成功
*/
SUCCESS(200, "ok"),
/**
* 参数不齐全或参数错误
*/
BAD_REQUEST(400,"参数不正确");
private Integer code;
private String message;
CodeEnum(Integer code, String message) {
this.code = code;
this.message = message;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
控制器测试代码如下:
/**
* 成功调用不返回数据测试
* @return
*/
@GetMapping("/test")
public Result test(){
return Result.success();
}
/**
* 成功调用返回数据测试
* @return
*/
@GetMapping("/test1")
public Result test1(){
List<Calendar> calendars=calendarService.getNowDay();
return Result.success(calendars);
}
/**
* 参数格式有误调用返回数据测试
* @return
*/
@GetMapping("/test2")
public Result test2(@RequestParam("name") String name){
if(name==null||name.equals("")){
return Result.badRequest();
};
return Result.success();
}
接口返回示例如下:
{
"status": 200,
"message": "ok",
"data": null
}
{
"status": 200,
"message": "ok",
"data": [
{
"id": 3,
"userId": 1,
"startTime": "2019-05-10T00:00:00",
"endTime": "2019-05-10T01:00:00",
"alarmType": 0,
"alarmTimeType": 6,
"status": 0,
"alarmTime": "2020-09-08T11:13:00",
"addTime": "2020-09-07T11:50:10",
"updateTime": null,
"deleted": false,
"activityContent": "活动内容"
},
{
"id": 4,
"userId": 1,
"startTime": "2019-05-10T00:00:00",
"endTime": "2019-05-10T01:00:00",
"alarmType": 1,
"alarmTimeType": 5,
"status": 0,
"alarmTime": "2020-09-08T11:13:00",
"addTime": "2020-09-07T11:50:32",
"updateTime": null,
"deleted": false,
"activityContent": "活动内容"
}
]
}
{
"status": 400,
"message": "参数不正确",
"data": null
}