国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

看看人家那后端API接口寫得,那叫一個優雅!

開發 后端
在移動互聯網,分布式、微服務盛行的今天,現在項目絕大部分都采用的微服務框架,前后端分離方式。

 

前言

在移動互聯網,分布式、微服務盛行的今天,現在項目絕大部分都采用的微服務框架,前后端分離方式,(題外話:前后端的工作職責越來越明確,現在的前端都稱之為大前端,技術棧以及生態圈都已經非常成熟;以前后端人員瞧不起前端人員,那現在后端人員要重新認識一下前端,前端已經很成體系了)。

一般系統的大致整體架構圖如下:   

需要說明的是,有些小伙伴會回復說,這個架構太簡單了吧,太low了,什么網關啊,緩存啊,消息中間件啊,都沒有。因為老顧這篇主要介紹的是API接口,所以我們聚焦點,其他的模塊小伙伴們自行去補充。

接口交互

前端和后端進行交互,前端按照約定請求URL路徑,并傳入相關參數,后端服務器接收請求,進行業務處理,返回數據給前端。

針對URL路徑的restful風格,以及傳入參數的公共請求頭的要求(如:app_version,api_version,device等),老顧這里就不介紹了,小伙伴們可以自行去了解,也比較簡單。

著重介紹一下后端服務器如何實現把數據返回給前端?

返回格式

后端返回給前端我們一般用JSON體方式,定義如下: 

  1.  
  2.     #返回狀態碼  
  3.     code:integer,       
  4.      #返回信息描述  
  5.     message:string,  
  6.     #返回值  
  7.     data:object  

CODE狀態碼

code返回狀態碼,一般小伙伴們是在開發的時候需要什么,就添加什么。

如接口要返回用戶權限異常,我們加一個狀態碼為101吧,下一次又要加一個數據參數異常,就加一個102的狀態碼。這樣雖然能夠照常滿足業務,但狀態碼太凌亂了

我們應該可以參考HTTP請求返回的狀態碼 

  1. :下面是常見的HTTP狀態碼:  
  2. 200 - 請求成功  
  3. 301 - 資源(網頁等)被永久轉移到其它URL  
  4. 404 - 請求的資源(網頁等)不存在  
  5. 500 - 內部服務器錯誤 

我們可以參考這樣的設計,這樣的好處就把錯誤類型歸類到某個區間內,如果區間不夠,可以設計成4位數。 

  1. #1000~1999 區間表示參數錯誤  
  2. #2000~2999 區間表示用戶錯誤  
  3. #3000~3999 區間表示接口異常 

這樣前端開發人員在得到返回值后,根據狀態碼就可以知道,大概什么錯誤,再根據message相關的信息描述,可以快速定位。

Message

這個字段相對理解比較簡單,就是發生錯誤時,如何友好的進行提示。一般的設計是和code狀態碼一起設計,如

再在枚舉中定義,狀態碼

狀態碼和信息就會一一對應,比較好維護。

Data

返回數據體,JSON格式,根據不同的業務又不同的JSON體。

我們要設計一個返回體類Result

控制層Controller

我們會在controller層處理業務請求,并返回給前端,以order訂單為例

我們看到在獲得order對象之后,我們是用的Result構造方法進行包裝賦值,然后進行返回。小伙伴們有沒有發現,構造方法這樣的包裝是不是很麻煩,我們可以優化一下。

美觀優化

我們可以在Result類中,加入靜態方法,一看就懂

那我們來改造一下Controller

代碼是不是比較簡潔了,也美觀了。

優雅優化

上面我們看到在Result類中增加了靜態方法,使得業務處理代碼簡潔了。但小伙伴們有沒有發現這樣有幾個問題:

    1、每個方法的返回都是Result封裝對象,沒有業務含義

    2、在業務代碼中,成功的時候我們調用Result.success,異常錯誤調用Result.failure。是不是很多余

    3、上面的代碼,判斷id是否為null,其實我們可以使用hibernate validate做校驗,沒有必要在方法體中做判斷。

我們最好的方式直接返回真實業務對象,最好不要改變之前的業務方式,如下圖

這個和我們平時的代碼是一樣的,非常直觀,直接返回order對象,這樣是不是很完美。那實現方案是什么呢?

實現方案

小伙伴們怎么去實現是不是有點思路,在這個過程中,我們需要做幾個事情

    1、定義一個注解@ResponseResult,表示這個接口返回的值需要包裝一下

    2、攔截請求,判斷此請求是否需要被@ResponseResult注解

    3、核心步驟就是實現接口ResponseBodyAdvice和@ControllerAdvice,判斷是否需要包裝返回值,如果需要,就把Controller接口的返回值進行重寫。

注解類

用來標記方法的返回值,是否需要包裝

攔截器

攔截請求,是否此請求返回的值需要包裝,其實就是運行的時候,解析@ResponseResult注解

此代碼核心思想,就是獲取此請求,是否需要返回值包裝,設置一個屬性標記。

重寫返回體

上面代碼就是判斷是否需要返回值包裝,如果需要就直接包裝。這里我們只處理了正常成功的包裝,如果方法體報異常怎么辦?處理異常也比較簡單,只要判斷body是否為異常類。

怎么做全局的異常處理,篇幅原因,老顧這里就不做介紹了,只要思路理清楚了,自行改造就行。

重寫Controller

在控制器類上或者方法體上加上@ResponseResult注解,這樣就ok了,簡單吧。到此返回的設計思路完成,是不是又簡潔,又優雅。

總結

這個方案還有沒有別的優化空間,當然是有的。如:每次請求都要反射一下,獲取請求的方法是否需要包裝,其實可以做個緩存,不需要每次都需要解析。當然整體思路了解,小伙伴們就可以在此基礎上面自行擴展。謝謝!??! 

 

責任編輯:龐桂玉 來源: Java編程
相關推薦

2025-08-19 10:01:43

2020-11-17 09:34:31

API接口后端

2022-12-12 08:14:47

2025-07-14 00:00:00

接口重試MQTT冪等性

2025-03-11 08:20:58

2025-05-30 08:20:54

2024-11-12 08:20:31

2025-04-08 08:20:33

2024-10-24 08:21:33

2024-12-02 00:59:30

Spring

2025-03-06 08:21:02

判空entity對象

2025-04-22 08:20:51

2025-02-28 08:21:00

2023-12-30 20:04:51

MyBatis框架數據

2024-10-17 09:21:30

2019-12-04 09:54:03

深度學習編程人工智能

2025-04-02 12:20:00

開發代碼函數

2024-11-08 15:56:36

2024-11-07 10:55:26

2022-06-21 14:44:38

接口數據脫敏
點贊
收藏

51CTO技術棧公眾號

精品美女永久免费视频| 麻豆成人入口| 在线观看日韩电影| 亚洲精品中文综合第一页| 另类一区二区三区| 欧美一区二区三区系列电影| 手机看片1024久久| 久久五月婷婷丁香社区| 亚洲在线观看一区| 亚洲欧洲日本mm| 国产日韩精品电影| 亚洲美女久久| 欧美精品video| 日本久久久久| 中文字幕一区二区精品| 欧美巨大xxxx做受沙滩| 91精品国产综合久久久久| 日韩在线无毛| 色婷婷久久久综合中文字幕| 亚洲成人套图| 欧美性猛交xxxx乱大交极品| 在线观看高清av| 无码av免费一区二区三区试看| 国产网站av| 一区二区国产视频| 最全影音av资源中文字幕在线| 亚洲国产日韩a在线播放性色| 日本视频一二区| 亚洲一区二区影院| 日韩porn| 91精品国产综合久久久蜜臀图片| 午夜在线观看视频| 日韩欧美亚洲国产另类| 高h视频在线观看| 欧美夫妻性生活| 亚洲综合影视| 亚洲精品久久久久久久久| 香蕉成人av| 超碰97人人做人人爱少妇| 大型av综合网站| 热门国产精品亚洲第一区在线| 日韩在线中文| 欧美18视频| 成人免费视频免费观看| 一道本在线免费视频| 五月激情综合色| 超碰超碰在线| 国产亚洲美女精品久久久| 97久久综合精品久久久综合| 国产成人精品久久亚洲高清不卡| 亚洲va在线| 午夜久久资源| 国产不卡视频一区二区三区| 亚洲国产成人va在线观看麻豆| 亚洲国产综合在线| 成年人网站在线| 日韩一区二区精品视频| 你微笑时很美电视剧整集高清不卡| 91在线视频导航| 日韩精品电影一区亚洲| www.日本在线播放| 亚洲欧美综合久久久| 国产精品一二三视频| 欧美精品一线| 亚洲v欧美v另类v综合v日韩v| 国产传媒一区在线| 免费看黄视频网站| 欧美色欧美亚洲高清在线视频| 国产在线1区| 最新中文字幕亚洲| 国产中文字幕一区二区三区 | 亚洲三级电影网站| 国产九九在线| 国产亚洲欧美日韩一区二区| 岳的好大精品一区二区三区| 国产欧美精品一区二区三区| 99国产欧美另类久久久精品| 日本aaa在线观看| 一区二区三区天堂av| 午夜影院欧美| 尤物av无码色av无码| 色狠狠色狠狠综合| 国产一区二区三区| 狠狠色综合网站久久久久久久| 久久综合久色欧美综合狠狠| www 日韩| 国内免费精品永久在线视频| 丝袜国产日韩另类美女| 国产黄色免费网| 精品亚洲夜色av98在线观看 | 亚洲新声在线观看| 亚洲经典一区| 超碰网在线观看| 欧美精品日韩一区| 国内精品国产成人国产三级粉色| 欧美一级二级三级| 一区二区激情视频| 日韩综合av| 国产女主播一区二区| 国产亚洲成年网址在线观看| 黄色av免费在线| 国产精品久久99久久| 成人午夜在线免费| 性欧美猛交videos| 成人中文字幕+乱码+中文字幕| 久久影院视频免费| 蜜桃视频www网站在线观看| y111111国产精品久久婷婷| 国产亚洲污的网站| 国产精品粉嫩| 日韩成人在线资源| 欧美色老头old∨ideo| 91一区二区| 午夜影院观看视频免费| 欧美极品少妇与黑人| 成人av网站大全| 久久久久久国产| 天天看片激情网站| 日韩在线激情视频| 午夜一级久久| 黄色片av在线| 成人ar影院免费观看视频| 国产精品v日韩精品v在线观看| 欧美电影一区二区| 亚洲欧美日韩精品久久奇米色影视| 亚洲视频免费在线| 国产欧美日韩视频一区二区| 成人深夜在线观看| 国产精品亚洲一区二区三区在线| 免费看的黄色欧美网站| 日本不卡在线视频| 国内精品写真在线观看| 久久成人免费日本黄色| 国产伦精品一区二区三区视频青涩| 精品一区二区三区在线观看国产| 狠狠色丁香久久婷婷综| 国产精品水嫩水嫩| 国内在线观看一区二区三区| 亚洲嫩模一区| 欧美性受xxxx黑人猛交88| 乱妇乱女熟妇熟女网站| 米奇.777.com| 高清视频在线观看三级| 亚洲五码在线| 亚洲91中文字幕无线码三区| 国产成人在线观看免费网站| 亚洲一区二区三区四区在线观看| 亚洲成人免费网站| 国产精品久久二区| 亚洲国产一区在线| 国产美女免费观看| 日本在线观看高清完整版| 91麻豆精品国产综合久久久 | 亚洲人成精品久久久久久| 日韩欧美一级在线播放| 日韩av在线直播| 国产不卡av在线免费观看| 日韩亚洲视频| 一区二区三区国产免费| 超碰在线cao| 91精品精品| 丁香五精品蜜臀久久久久99网站| 亚洲影视在线播放| 亚洲欧美一区二区三区四区| 日本精品视频在线播放| 国产日韩第一页| 美女91在线| 久久国产精品成人免费观看的软件| 另类欧美日韩国产在线| 亚洲国产乱码最新视频| 日韩一级黄色av| 佐佐木明希av| 热色播在线视频| 国产99久久久精品| 日韩在线免费视频| 亚洲狼人综合干| 婷婷综合一区| 大伊人狠狠躁夜夜躁av一区| 国产一区不卡在线观看| h片在线观看视频免费| 麻豆一区二区在线| 国产精品一区二区三区网站| 国产精品女人毛片| 欧美日韩不卡视频| 欧美极品第一页| 狠狠久久综合婷婷不卡| 国产精品-区区久久久狼| fc2在线中文字幕| 在线中文字幕播放| 999视频精品| 自拍偷拍国产精品| 一个色综合导航| 亚洲高清123| 国产中文字幕在线观看| 亚洲综合图色| 亚洲欧美在线视频| 91精品国产777在线观看| 九色自拍视频在线观看| 91资源在线观看| 国产精品毛片在线看|