最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java接口統(tǒng)一樣式返回模板簡介

 更新時間:2019年10月31日 10:51:01   作者:web_bird  
這篇文章主要介紹了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;  // 測試異?,F(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
}

到這里,基本上關(guān)于接口樣式的模板也就介紹完了,如有不準確的地方,請留言多多指教。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java 語言實現(xiàn)清除帶 html 標簽的內(nèi)容方法

    Java 語言實現(xiàn)清除帶 html 標簽的內(nèi)容方法

    下面小編就為大家?guī)硪黄狫ava 語言實現(xiàn)清除帶 html 標簽的內(nèi)容方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • Java GUI編程實現(xiàn)在線聊天室

    Java GUI編程實現(xiàn)在線聊天室

    這篇文章主要為大家詳細介紹了Java GUI編程實現(xiàn)在線聊天室,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • java,android,MD5加密算法的實現(xiàn)代碼(16位,32位)

    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í)行異步處理操作

    這篇文章主要介紹了Spring Boot使用AOP在指定方法執(zhí)行完后執(zhí)行異步處理操作,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2024-06-06
  • SpringBoot大事務問題的常用優(yōu)化方案

    SpringBoot大事務問題的常用優(yōu)化方案

    大事務是指運行時間比較長,操作的數(shù)據(jù)比較多的事務123,大事務的產(chǎn)生原因包括操作的數(shù)據(jù)比較多、大量的鎖競爭、事務中有其他非數(shù)據(jù)庫的耗時操作等,本文給大家總結(jié)了SpringBoot大事務問題的常用優(yōu)化方案,需要的朋友可以參考下
    2024-04-04
  • SpringBoot如何訪問本地圖片

    SpringBoot如何訪問本地圖片

    這篇文章主要介紹了SpringBoot如何訪問本地圖片問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 詳解Java中KMP算法的圖解與實現(xiàn)

    詳解Java中KMP算法的圖解與實現(xiàn)

    KMP算法是一種神奇的字符串匹配算法,在對超長字符串進行模板匹配的時候比暴力匹配法的效率會高不少。本文將利用圖解為大家詳細講解KMP算法的實現(xiàn),需要的可以參考一下
    2022-05-05
  • Java回溯法解決全排列問題流程詳解

    Java回溯法解決全排列問題流程詳解

    從n個不同元素中任取m(m≤n)個元素,按照一定的順序排列起來,叫做從n個不同元素中取出m個元素的一個排列。當m=n時所有的排列情況叫全排列。這篇文章主要介紹了Java回溯法解決全排列問題
    2022-10-10
  • Arrays.sort(arr)是什么排序及代碼邏輯

    Arrays.sort(arr)是什么排序及代碼邏輯

    在學習過程中觀察到Arrays.sort(arr)算法可以直接進行排序,但不清楚底層的代碼邏輯是什么樣子,今天通過本文給大家介紹下Arrays.sort(arr)是什么排序,感興趣的朋友一起看看吧
    2022-02-02
  • Springboot3.3 整合Cassandra 4.1.5的詳細過程

    Springboot3.3 整合Cassandra 4.1.5的詳細過程

    這篇文章主要介紹了Springboot3.3 整合Cassandra 4.1.5的詳細過程,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-06-06

最新評論

会泽县| 波密县| 萨嘎县| 石狮市| 汉寿县| 保靖县| 万年县| 武穴市| 六安市| 鹿邑县| 大冶市| 鄂伦春自治旗| 溧阳市| 扶余县| 曲阳县| 大竹县| 夏邑县| 彩票| 江孜县| 邵东县| 五常市| 鄂托克前旗| 浪卡子县| 海丰县| 闵行区| 施秉县| 云浮市| 廊坊市| 玉环县| 盐山县| 平顶山市| 正蓝旗| 祁东县| 民丰县| 牙克石市| 阳东县| 布尔津县| 进贤县| 香格里拉县| 泰州市| 枞阳县|