Java接口統(tǒng)一樣式返回模板簡介
這篇文章主要介紹了Java接口統(tǒng)一樣式返回模板簡介,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
背景
在進行接口開發(fā)時,一般需要一個固定的返回樣式,成功和失敗的時候,都按照這種格式來進行統(tǒng)一的返回,這樣,在與其他人進行接口之間的聯(lián)調(diào)時不會顯得很雜亂無章。而這種固定的格式如果放在Java的每個接口單獨處理時,又會在接口開發(fā)時很繁瑣,所以這個時候可以采用封裝一個實體類,統(tǒng)一返回固定模板格式的內(nèi)容。
封裝模板
先看一下沒有封裝之前,接口代碼和返回格式:
/**
* 用戶修改
* @return 返回修改的用戶信息
*/
@PutMapping(value = "update")
public User update(@RequestBody User user) {
User updatedUser = userService.update(user);
return updatedUser;
}
{
"userId": "0d67cfa7-f6a1-46b6-8e5a-b605afc98c44",
"username": "ww",
"password": "123456",
"status": 0,
"createTime": 310863886132307,
"updateTime": 312955781619836
}
很顯然,這種原始的內(nèi)容返回雖然很直觀,但是如果在發(fā)生錯誤的時候,那么接口的返回就比較的不自然了,甚至會將底層的錯誤對外暴露,下面介紹下一個簡單的統(tǒng)一接口樣式的封裝:
枚舉類ResponseCode:定義返回碼code及提示信息msg
我們先定義一個枚舉類,用于封裝返回的code碼和提示信息msg,當然也可以封裝其他的信息,比如狀態(tài)status,這個可以根據(jù)自己的項目自由選擇。
package com.server.config;
/**
* @Package com.server.config
* @Author wuzy
* @Date 2019/10/30 14:47
* @Version V1.0
* @Description: code碼封裝枚舉類
*/
public enum ResponseCode {
/** 成功 */
SUCCESS("200", "成功"),
/** 操作失敗 */
ERROR("500", "操作失敗");
private ResponseCode(String value, String msg){
this.val = value;
this.msg = msg;
}
public String val() {
return val;
}
public String msg() {
return msg;
}
private String val;
private String msg;
}
封裝類ResultData: 定義code、msg及數(shù)據(jù)data
再定義一個封裝類ResultData,該類用于接口返回時的統(tǒng)一格式封裝,這里,我們定義了三個屬性,分別為狀態(tài)碼code,提示消息msg以及返回的數(shù)據(jù)data。下面是具體的代碼:
package com.server.config;
import lombok.Data;
/**
* @Package com.server.config
* @Author wuzy
* @Date 2019/10/30 14:38
* @Version V1.0
* @Description: 返回樣式封裝
*/
@Data
public class ResultData {
private String code;
private String msg;
private Object data;
public static ResultData success(Object data) {
return resultData(ResponseCode.SUCCESS.val(), ResponseCode.SUCCESS.msg(), data);
}
public static ResultData success(Object data, String msg) {
return resultData(ResponseCode.SUCCESS.val(), msg, data);
}
public static ResultData fail(String code, String msg) {
return resultData(code, msg, null);
}
public static ResultData fail(String code, String msg, Object data) {
return resultData(code, msg, data);
}
private static ResultData resultData(String code, String msg, Object data) {
ResultData resultData = new ResultData();
resultData.setCode(code);
resultData.setMsg(msg);
resultData.setData(data);
return resultData;
}
}
可以根據(jù)自己項目的需求進行方法、屬性等內(nèi)容的擴展。
測試實例
這里,我們使用UserController中的save()方法進行測試,查看其添加了統(tǒng)一樣式之后的效果,先看下該方法:
/**
* 用戶保存
* @return 返回保存的用戶信息
*/
@PostMapping(value = "save")
@ApiOperation(value = "保存用戶信息", notes = "保存用戶的詳細信息")
public ResultData save(@RequestBody User user) {
try {
User savedUser = null;
if (user != null) {
if (StringUtils.isEmpty(user.getUserId())) {
user.setUserId(UUID.randomUUID().toString());
}
savedUser = userService.save(user);
// int i = 1/0; // 測試異常現(xiàn)象時放開這行代碼
}
return ResultData.success(savedUser);
} catch (Exception e) {
e.printStackTrace();
return ResultData.fail(ResponseCode.ERROR.val(), "用戶保存過程中發(fā)生異常,請檢查!");
}
}
先看一下成功(也就是調(diào)用success方法)的情況
{
"code": "200",
"msg": "成功",
"data": {
"userId": "0d67cfa7-f6a1-46b6-8e5a-b605afc98c44",
"username": "ww",
"password": "123456",
"status": 0,
"createTime": 310863886132307,
"updateTime": 312955781619836
}
}
再看一下發(fā)生異?;蛘弑4媸r候的錯誤提示信息,這里使用1/0的異常來測試,結(jié)果如下:
{
"code": "500",
"msg": "用戶保存過程中發(fā)生異常,請檢查!",
"data": null
}
到這里,基本上關于接口樣式的模板也就介紹完了,如有不準確的地方,請留言多多指教。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Java 語言實現(xiàn)清除帶 html 標簽的內(nèi)容方法
下面小編就為大家?guī)硪黄狫ava 語言實現(xiàn)清除帶 html 標簽的內(nèi)容方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02
java,android,MD5加密算法的實現(xiàn)代碼(16位,32位)
下面小編就為大家?guī)硪黄猨ava,android,MD5加密算法的實現(xiàn)代碼(16位,32位)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-09-09
Spring Boot使用AOP在指定方法執(zhí)行完后執(zhí)行異步處理操作
這篇文章主要介紹了Spring Boot使用AOP在指定方法執(zhí)行完后執(zhí)行異步處理操作,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2024-06-06
Springboot3.3 整合Cassandra 4.1.5的詳細過程
這篇文章主要介紹了Springboot3.3 整合Cassandra 4.1.5的詳細過程,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧2024-06-06

