日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

接口設(shè)計的18條軍規(guī)

來源: 責(zé)編: 時間:2024-05-24 17:25:48 292觀看
導(dǎo)讀前言今天延續(xù)設(shè)計的話題,給大家總結(jié)了接口設(shè)計的18條軍規(guī),希望對你會有所幫助。1. 簽名為了防止API接口中的數(shù)據(jù)被篡改,很多時候我們需要對API接口做簽名。接口請求方將請求參數(shù) + 時間戳 + 密鑰拼接成一個字符串,然后通

6bA28資訊網(wǎng)——每日最新資訊28at.com

前言

今天延續(xù)設(shè)計的話題,給大家總結(jié)了接口設(shè)計的18條軍規(guī),希望對你會有所幫助。6bA28資訊網(wǎng)——每日最新資訊28at.com

6bA28資訊網(wǎng)——每日最新資訊28at.com

1. 簽名

為了防止API接口中的數(shù)據(jù)被篡改,很多時候我們需要對API接口做簽名。6bA28資訊網(wǎng)——每日最新資訊28at.com

接口請求方將請求參數(shù) + 時間戳 + 密鑰拼接成一個字符串,然后通過md5等hash算法,生成一個前面sign。6bA28資訊網(wǎng)——每日最新資訊28at.com

然后在請求參數(shù)或者請求頭中,增加sign參數(shù),傳遞給API接口。6bA28資訊網(wǎng)——每日最新資訊28at.com

API接口的網(wǎng)關(guān)服務(wù),獲取到該sign值,然后用相同的請求參數(shù) + 時間戳 + 密鑰拼接成一個字符串,用相同的m5算法生成另外一個sign,對比兩個sign值是否相等。6bA28資訊網(wǎng)——每日最新資訊28at.com

如果兩個sign相等,則認(rèn)為是有效請求,API接口的網(wǎng)關(guān)服務(wù)會將給請求轉(zhuǎn)發(fā)給相應(yīng)的業(yè)務(wù)系統(tǒng)。6bA28資訊網(wǎng)——每日最新資訊28at.com

如果兩個sign不相等,則API接口的網(wǎng)關(guān)服務(wù)會直接返回簽名錯誤。6bA28資訊網(wǎng)——每日最新資訊28at.com

問題來了:簽名中為什么要加時間戳?6bA28資訊網(wǎng)——每日最新資訊28at.com

答:為了安全性考慮,防止同一次請求被反復(fù)利用,增加了密鑰沒破解的可能性,我們必須要對每次請求都設(shè)置一個合理的過期時間,比如:15分鐘。6bA28資訊網(wǎng)——每日最新資訊28at.com

這樣一次請求,在15分鐘之內(nèi)是有效的,超過15分鐘,API接口的網(wǎng)關(guān)服務(wù)會返回超過有效期的異常提示。6bA28資訊網(wǎng)——每日最新資訊28at.com

目前生成簽名中的密鑰有兩種形式:6bA28資訊網(wǎng)——每日最新資訊28at.com

一種是雙方約定一個固定值privateKey。6bA28資訊網(wǎng)——每日最新資訊28at.com

另一種是API接口提供方給出AK/SK兩個值,雙方約定用SK作為簽名中的密鑰。AK接口調(diào)用方作為header中的accessKey傳遞給API接口提供方,這樣API接口提供方可以根據(jù)AK獲取到SK,而生成新的sgin。6bA28資訊網(wǎng)——每日最新資訊28at.com

2. 加密

有些時候,我們的API接口直接傳遞的非常重要的數(shù)據(jù),比如:用戶的登錄密碼、銀行卡號、轉(zhuǎn)賬金額、用戶身份證等,如果將這些參數(shù),直接明文,暴露到公網(wǎng)上是非常危險的事情。6bA28資訊網(wǎng)——每日最新資訊28at.com

由此,我們需要對數(shù)據(jù)進行加密。6bA28資訊網(wǎng)——每日最新資訊28at.com

比如:用戶注冊接口,用戶輸入了用戶名和密碼之后,需要將密碼加密。6bA28資訊網(wǎng)——每日最新資訊28at.com

我們可以使用AES對稱加密算法。6bA28資訊網(wǎng)——每日最新資訊28at.com

在前端使用公鑰對用戶密碼加密。6bA28資訊網(wǎng)——每日最新資訊28at.com

然后注冊接口中,可以使用密鑰解密,做一些業(yè)務(wù)需求校驗。然后再換成其他的加密方式加密,保存到數(shù)據(jù)庫當(dāng)中。6bA28資訊網(wǎng)——每日最新資訊28at.com

3. ip白名單

為了進一步加強API接口的安全性,防止接口的簽名或者加密被破解了,攻擊者可以在自己的服務(wù)器上請求該接口。6bA28資訊網(wǎng)——每日最新資訊28at.com

需求限制請求ip,增加ip白名單。6bA28資訊網(wǎng)——每日最新資訊28at.com

只有在白名單中的ip地址,才能成功請求API接口,否則直接返回?zé)o訪問權(quán)限。6bA28資訊網(wǎng)——每日最新資訊28at.com

ip白名單也可以加在API網(wǎng)關(guān)服務(wù)上。6bA28資訊網(wǎng)——每日最新資訊28at.com

但也要防止公司的內(nèi)部應(yīng)用服務(wù)器被攻破,這種情況也可以從內(nèi)部服務(wù)器上發(fā)起API接口的請求。6bA28資訊網(wǎng)——每日最新資訊28at.com

這時候就需要增加web防火墻了,比如:ModSecurity等。6bA28資訊網(wǎng)——每日最新資訊28at.com

4. 限流

如果你的API接口被第三方平臺調(diào)用了,這就意味著著,調(diào)用頻率是沒法控制的。6bA28資訊網(wǎng)——每日最新資訊28at.com

第三方平臺調(diào)用你的API接口時,如果并發(fā)量一下子太高,可能會導(dǎo)致你的API服務(wù)不可用,接口直接掛掉。6bA28資訊網(wǎng)——每日最新資訊28at.com

由此,必須要對API接口做限流。6bA28資訊網(wǎng)——每日最新資訊28at.com

限流方法有三種:6bA28資訊網(wǎng)——每日最新資訊28at.com

  • 對請求ip做限流:比如同一個ip,在一分鐘內(nèi),對API接口總的請求次數(shù),不能超過10000次。
  • 對請求接口做限流:比如同一個ip,在一分鐘內(nèi),對指定的API接口,請求次數(shù)不能超過2000次。
  • 對請求用戶做限流:比如同一個AK/SK用戶,在一分鐘內(nèi),對API接口總的請求次數(shù),不能超過10000次。

我們在實際工作中,可以通過nginx,redis或者gateway實現(xiàn)限流的功能。6bA28資訊網(wǎng)——每日最新資訊28at.com

5. 參數(shù)校驗

我們需要對API接口做參數(shù)校驗,比如:校驗必填字段是否為空,校驗字段類型,校驗字段長度,校驗枚舉值等等。6bA28資訊網(wǎng)——每日最新資訊28at.com

這樣做可以攔截一些無效的請求。6bA28資訊網(wǎng)——每日最新資訊28at.com

比如在新增數(shù)據(jù)時,字段長度超過了數(shù)據(jù)字段的最大長度,數(shù)據(jù)庫會直接報錯。6bA28資訊網(wǎng)——每日最新資訊28at.com

但這種異常的請求,我們完全可以在API接口的前期進行識別,沒有必要走到數(shù)據(jù)庫保存數(shù)據(jù)那一步,浪費系統(tǒng)資源。6bA28資訊網(wǎng)——每日最新資訊28at.com

有些金額字段,本來是正數(shù),但如果用戶傳入了負(fù)數(shù),萬一接口沒做校驗,可能會導(dǎo)致一些沒必要的損失。6bA28資訊網(wǎng)——每日最新資訊28at.com

還有些狀態(tài)字段,如果不做校驗,用戶如果傳入了系統(tǒng)中不存在的枚舉值,就會導(dǎo)致保存的數(shù)據(jù)異常。6bA28資訊網(wǎng)——每日最新資訊28at.com

由此可見,做參數(shù)校驗是非常有必要的。6bA28資訊網(wǎng)——每日最新資訊28at.com

在Java中校驗數(shù)據(jù)使用最多的是hiberate的Validator框架,它里面包含了@Null、@NotEmpty、@Size、@Max、@Min等注解。6bA28資訊網(wǎng)——每日最新資訊28at.com

用它們校驗數(shù)據(jù)非常方便。6bA28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)然有些日期字段和枚舉字段,可能需要通過自定義注解的方式實現(xiàn)參數(shù)校驗。6bA28資訊網(wǎng)——每日最新資訊28at.com

6. 統(tǒng)一返回值

我之前調(diào)用過別人的API接口,正常返回數(shù)據(jù)是一種json格式,比如:6bA28資訊網(wǎng)——每日最新資訊28at.com

{    "code":0,    "message":null,    "data":[{"id":123,"name":"abc"}]},

簽名錯誤返回的json格式:6bA28資訊網(wǎng)——每日最新資訊28at.com

{    "code":1001,    "message":"簽名錯誤",    "data":null}

沒有數(shù)據(jù)權(quán)限返回的json格式:6bA28資訊網(wǎng)——每日最新資訊28at.com

{    "rt":10,    "errorMgt":"沒有權(quán)限",    "result":null}

這種是比較坑的做法,返回值中有多種不同格式的返回數(shù)據(jù),這樣會導(dǎo)致對接方很難理解。6bA28資訊網(wǎng)——每日最新資訊28at.com

出現(xiàn)這種情況,可能是API網(wǎng)關(guān)定義了一直返回值結(jié)構(gòu),業(yè)務(wù)系統(tǒng)定義了另外一種返回值結(jié)構(gòu)。如果是網(wǎng)關(guān)異常,則返回網(wǎng)關(guān)定義的返回值結(jié)構(gòu),如果是業(yè)務(wù)系統(tǒng)異常,則返回業(yè)務(wù)系統(tǒng)的返回值結(jié)構(gòu)。6bA28資訊網(wǎng)——每日最新資訊28at.com

但這樣會導(dǎo)致API接口出現(xiàn)不同的異常時,返回不同的返回值結(jié)構(gòu),非常不利于接口的維護。6bA28資訊網(wǎng)——每日最新資訊28at.com

其實這個問題我們可以在設(shè)計API網(wǎng)關(guān)時解決。6bA28資訊網(wǎng)——每日最新資訊28at.com

業(yè)務(wù)系統(tǒng)在出現(xiàn)異常時,拋出業(yè)務(wù)異常的RuntimeException,其中有個message字段定義異常信息。6bA28資訊網(wǎng)——每日最新資訊28at.com

所有的API接口都必須經(jīng)過API網(wǎng)關(guān),API網(wǎng)關(guān)捕獲該業(yè)務(wù)異常,然后轉(zhuǎn)換成統(tǒng)一的異常結(jié)構(gòu)返回,這樣能統(tǒng)一返回值結(jié)構(gòu)。6bA28資訊網(wǎng)——每日最新資訊28at.com

7. 統(tǒng)一封裝異常

我們的API接口需要對異常進行統(tǒng)一處理。6bA28資訊網(wǎng)——每日最新資訊28at.com

不知道你有沒有遇到過這種場景:有時候在API接口中,需要訪問數(shù)據(jù)庫,但表不存在,或者sql語句異常,就會直接把sql信息在API接口中直接返回。6bA28資訊網(wǎng)——每日最新資訊28at.com

返回值中包含了異常堆棧信息、數(shù)據(jù)庫信息、錯誤代碼和行數(shù)等信息。6bA28資訊網(wǎng)——每日最新資訊28at.com

如果直接把這些內(nèi)容暴露給第三方平臺,是很危險的事情。6bA28資訊網(wǎng)——每日最新資訊28at.com

有些不法分子,利用接口返回值中的這些信息,有可能會進行sql注入或者直接脫庫,而對我們系統(tǒng)造成一定的損失。6bA28資訊網(wǎng)——每日最新資訊28at.com

因此非常有必要對API接口中的異常做統(tǒng)一處理,把異常轉(zhuǎn)換成這樣:6bA28資訊網(wǎng)——每日最新資訊28at.com

{    "code":500,    "message":"服務(wù)器內(nèi)部錯誤",    "data":null}

返回碼code是500,返回信息message是服務(wù)器內(nèi)部異常。6bA28資訊網(wǎng)——每日最新資訊28at.com

這樣第三方平臺就知道是API接口出現(xiàn)了內(nèi)部問題,但不知道具體原因,他們可以找我們排查問題。6bA28資訊網(wǎng)——每日最新資訊28at.com

我們可以在內(nèi)部的日志文件中,把堆棧信息、數(shù)據(jù)庫信息、錯誤代碼行數(shù)等信息,打印出來。6bA28資訊網(wǎng)——每日最新資訊28at.com

我們可以在gateway中對異常進行攔截,做統(tǒng)一封裝,然后給第三方平臺的是處理后沒有敏感信息的錯誤信息。6bA28資訊網(wǎng)——每日最新資訊28at.com

8. 請求日志

在第三方平臺請求你的API接口時,接口的請求日志非常重要,通過它可以快速的分析和定位問題。6bA28資訊網(wǎng)——每日最新資訊28at.com

我們需要把API接口的請求url、請求參數(shù)、請求頭、請求方式、響應(yīng)數(shù)據(jù)和響應(yīng)時間等,記錄到日志文件中。6bA28資訊網(wǎng)——每日最新資訊28at.com

最好有traceId,可以通過它串聯(lián)整個請求的日志,過濾多余的日志。6bA28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)然有些時候,請求日志不光是你們公司開發(fā)人員需要查看,第三方平臺的用戶也需要能查看接口的請求日志。6bA28資訊網(wǎng)——每日最新資訊28at.com

這時就需要把日志落地到數(shù)據(jù)庫,比如:mongodb或者elastic search,然后做一個UI頁面,給第三方平臺的用戶開通查看權(quán)限。這樣他們就能在外網(wǎng)查看請求日志了,他們自己也能定位一部分問題。6bA28資訊網(wǎng)——每日最新資訊28at.com

9. 冪等設(shè)計

第三方平臺極有可能在極短的時間內(nèi),請求我們接口多次,比如:在1秒內(nèi)請求兩次。有可能是他們業(yè)務(wù)系統(tǒng)有bug,或者在做接口調(diào)用失敗重試,因此我們的API接口需要做冪等設(shè)計。6bA28資訊網(wǎng)——每日最新資訊28at.com

也就是說要支持在極短的時間內(nèi),第三方平臺用相同的參數(shù)請求API接口多次,第一次請求數(shù)據(jù)庫會新增數(shù)據(jù),但第二次請求以后就不會新增數(shù)據(jù),但也會返回成功。6bA28資訊網(wǎng)——每日最新資訊28at.com

這樣做的目的是不會產(chǎn)生錯誤數(shù)據(jù)。6bA28資訊網(wǎng)——每日最新資訊28at.com

我們在日常工作中,可以通過在數(shù)據(jù)庫中增加唯一索引,或者在redis保存requestId和請求參來保證接口冪等性。6bA28資訊網(wǎng)——每日最新資訊28at.com

10. 限制記錄條數(shù)

對于對我提供的批量接口,一定要限制請求的記錄條數(shù)。6bA28資訊網(wǎng)——每日最新資訊28at.com

如果請求的數(shù)據(jù)太多,很容易造成API接口超時等問題,讓API接口變得不穩(wěn)定。6bA28資訊網(wǎng)——每日最新資訊28at.com

通常情況下,建議一次請求中的參數(shù),最多支持傳入500條記錄。6bA28資訊網(wǎng)——每日最新資訊28at.com

如果用戶傳入多余500條記錄,則接口直接給出提示。6bA28資訊網(wǎng)——每日最新資訊28at.com

建議這個參數(shù)做成可配置的,并且要事先跟第三方平臺協(xié)商好,避免上線后產(chǎn)生不必要的問題。6bA28資訊網(wǎng)——每日最新資訊28at.com

對于一次性查詢的數(shù)據(jù)太多的情況,我們需要將接口設(shè)計成分頁查詢返回的。6bA28資訊網(wǎng)——每日最新資訊28at.com

11. 壓測

上線前我們務(wù)必要對API接口做一下壓力測試,知道各個接口的qps情況。6bA28資訊網(wǎng)——每日最新資訊28at.com

以便于我們能夠更好的預(yù)估,需要部署多少服務(wù)器節(jié)點,對于API接口的穩(wěn)定性至關(guān)重要。6bA28資訊網(wǎng)——每日最新資訊28at.com

之前雖說對API接口做了限流,但是實際上API接口是否能夠達到限制的閥值,這是一個問號,如果不做壓力測試,是有很大風(fēng)險的。6bA28資訊網(wǎng)——每日最新資訊28at.com

比如:你API接口限流1秒只允許50次請求,但實際API接口只能處理30次請求,這樣你的API接口也會處理不過來。6bA28資訊網(wǎng)——每日最新資訊28at.com

我們在工作中可以用jmeter或者apache benc對API接口做壓力測試。6bA28資訊網(wǎng)——每日最新資訊28at.com

12. 異步處理

一般的API接口的邏輯都是同步處理的,請求完之后立刻返回結(jié)果。6bA28資訊網(wǎng)——每日最新資訊28at.com

但有時候,我們的API接口里面的業(yè)務(wù)邏輯非常復(fù)雜,特別是有些批量接口,如果同步處理業(yè)務(wù),耗時會非常長。6bA28資訊網(wǎng)——每日最新資訊28at.com

這種情況下,為了提升API接口的性能,我們可以改成異步處理。6bA28資訊網(wǎng)——每日最新資訊28at.com

在API接口中可以發(fā)送一條mq消息,然后直接返回成功。之后,有個專門的mq消費者去異步消費該消息,做業(yè)務(wù)邏輯處理。6bA28資訊網(wǎng)——每日最新資訊28at.com

直接異步處理的接口,第三方平臺有兩種方式獲取到。6bA28資訊網(wǎng)——每日最新資訊28at.com

第一種方式是:我們回調(diào)第三方平臺的接口,告知他們API接口的處理結(jié)果,很多支付接口就是這么玩的。6bA28資訊網(wǎng)——每日最新資訊28at.com

第二種方式是:第三方平臺通過輪詢調(diào)用我們另外一個查詢狀態(tài)的API接口,每隔一段時間查詢一次狀態(tài),傳入的參數(shù)是之前的那個API接口中的id集合。6bA28資訊網(wǎng)——每日最新資訊28at.com

13. 數(shù)據(jù)脫敏

有時候第三方平臺調(diào)用我們API接口時,獲取的數(shù)據(jù)中有一部分是敏感數(shù)據(jù),比如:用戶手機號、銀行卡號等等。6bA28資訊網(wǎng)——每日最新資訊28at.com

這樣信息如果通過API接口直接保留到外網(wǎng),是非常不安全的,很容易造成用戶隱私數(shù)據(jù)泄露的問題。6bA28資訊網(wǎng)——每日最新資訊28at.com

這就需要對部分?jǐn)?shù)據(jù)做數(shù)據(jù)脫敏了。6bA28資訊網(wǎng)——每日最新資訊28at.com

我們可以在返回的數(shù)據(jù)中,部分內(nèi)容用星號代替。6bA28資訊網(wǎng)——每日最新資訊28at.com

已用戶手機號為例:182****887。6bA28資訊網(wǎng)——每日最新資訊28at.com

這樣即使數(shù)據(jù)被泄露了,也只泄露了一部分,不法分子拿到這份數(shù)據(jù)也沒啥用。6bA28資訊網(wǎng)——每日最新資訊28at.com

14. 完整的接口文檔

說實話,一份完整的API接口文檔,在雙方做接口對接時,可以減少很多溝通成本,讓對方少走很多彎路。6bA28資訊網(wǎng)——每日最新資訊28at.com

接口文檔中需要包含如下信息:6bA28資訊網(wǎng)——每日最新資訊28at.com

  • 接口地址
  • 請求方式,比如:post或get
  • 請求參數(shù)和字段介紹
  • 返回值和字段介紹
  • 返回碼和錯誤信息
  • 加密或簽名示例
  • 完整的請求demo
  • 額外的說明,比如:開通ip白名單。

接口文檔中最好能夠統(tǒng)一接口和字段名稱的命名風(fēng)格,比如都用駝峰標(biāo)識命名。6bA28資訊網(wǎng)——每日最新資訊28at.com

統(tǒng)一字段的類型和長度,比如:id字段用Long類型,長度規(guī)定20。status字段用int類型,長度固定2等。6bA28資訊網(wǎng)——每日最新資訊28at.com

統(tǒng)一時間格式字段,比如:time用String類型,格式為:yyyy-MM-dd HH:mm:ss。6bA28資訊網(wǎng)——每日最新資訊28at.com

接口文檔中寫明AK/SK和域名,找某某單獨提供等。6bA28資訊網(wǎng)——每日最新資訊28at.com

15. 請求方式

接口支持的請求方式有很多,比如:GET、POST、PUT、DELETE等等。6bA28資訊網(wǎng)——每日最新資訊28at.com

我們在設(shè)計接口的時候,要根據(jù)實際情況選擇使用哪種請求方式。6bA28資訊網(wǎng)——每日最新資訊28at.com

實際工作中使用最多的是:GET和POST,這兩種請求方式。6bA28資訊網(wǎng)——每日最新資訊28at.com

如果沒有輸入?yún)?shù)的接口,可以使用GET請求方式,問題不大。6bA28資訊網(wǎng)——每日最新資訊28at.com

如果有輸入?yún)?shù)的接口,推薦使用POST請求方式,坑更少。6bA28資訊網(wǎng)——每日最新資訊28at.com

主要原因有下面兩點:6bA28資訊網(wǎng)——每日最新資訊28at.com

  • POST請求方式更容易擴展參數(shù),特別是在Fegin調(diào)用接口的場景下,比如:增加一個參數(shù),調(diào)用方可以不用修改代碼。而GET請求方式,需要修改代碼,否則編譯會出錯。
  • GET請求方式的參數(shù),有長度限制,最長是5000個字符,而POST請求方式對參數(shù)的長度沒有做限制,可以傳入更長的參數(shù)值。

16. 請求頭

對于一些公共的功能,比如:接口的權(quán)限驗證,或者接口的traceId參數(shù)。6bA28資訊網(wǎng)——每日最新資訊28at.com

我們在設(shè)計接口的時候,不用把所有的參數(shù),都放入接口的請求參數(shù)中。6bA28資訊網(wǎng)——每日最新資訊28at.com

有些參數(shù)可以放到Header請求頭中。6bA28資訊網(wǎng)——每日最新資訊28at.com

比如:我們需求記錄每個請求的traceId,不用在所有接口中都加traceId字段。6bA28資訊網(wǎng)——每日最新資訊28at.com

而改成讓用戶在header中傳入traceId,在服務(wù)端使用統(tǒng)一的攔截器解析header,即可獲取該traceId了。6bA28資訊網(wǎng)——每日最新資訊28at.com

17. 批量

我們在設(shè)計接口的時候,無論是查詢數(shù)據(jù)、添加數(shù)據(jù)、修改數(shù)據(jù),還是刪除的場景,都應(yīng)該考慮一下能否設(shè)計成批量的。6bA28資訊網(wǎng)——每日最新資訊28at.com

很多時候,需要通過id查詢數(shù)據(jù)詳情,比如:通過訂單id,查詢訂單詳情。6bA28資訊網(wǎng)——每日最新資訊28at.com

如果你的接口只支持,通過一個id,查詢一個訂單的詳情。6bA28資訊網(wǎng)——每日最新資訊28at.com

那么,后面需要通過多個id,查詢多個訂單詳情的時候,就需要額外增加接口了。6bA28資訊網(wǎng)——每日最新資訊28at.com

如果你添加數(shù)據(jù)的接口,只支持一條數(shù)據(jù)一條數(shù)據(jù)的添加。6bA28資訊網(wǎng)——每日最新資訊28at.com

后面,有個job需要一次性添加1000條數(shù)據(jù)的時候,這時在代碼中循環(huán)1000次,一個個添加,這種做法效率比較低。6bA28資訊網(wǎng)——每日最新資訊28at.com

為了讓你的接口設(shè)計的更加通用,滿足更多的業(yè)務(wù)場景,能設(shè)計成批量的,盡量別設(shè)計成單個的。6bA28資訊網(wǎng)——每日最新資訊28at.com

18. 職責(zé)單一

我之前見過有些小伙伴設(shè)計的接口,在入?yún)⒅懈鞣N條件都支持,在Service層有N多的if...else判斷。6bA28資訊網(wǎng)——每日最新資訊28at.com

而且返回的實體類中,包含了各種場景下的返回值字段,字段很多很全。6bA28資訊網(wǎng)——每日最新資訊28at.com

接口上線一年之后,自己可能都忘了,在哪些業(yè)務(wù)場景下,要傳入哪些字段,返回值是哪些字段。6bA28資訊網(wǎng)——每日最新資訊28at.com

這類接口的維護成本非常高,而且又不敢輕易重構(gòu),怕改了A業(yè)務(wù)場景,影響B(tài)業(yè)務(wù)場景的功能,這種接口讓人非常痛苦的。6bA28資訊網(wǎng)——每日最新資訊28at.com

好的接口設(shè)計原則是:職責(zé)單一。6bA28資訊網(wǎng)——每日最新資訊28at.com

比如用戶下單的場景,有web端和移動端。6bA28資訊網(wǎng)——每日最新資訊28at.com

而每個端都有普通下單和快速下單,兩種不同的業(yè)務(wù)場景。6bA28資訊網(wǎng)——每日最新資訊28at.com

我們在設(shè)計接口的時候,可以將web端和移動端的接口在controller層完全分開。6bA28資訊網(wǎng)——每日最新資訊28at.com

/web/v1/order/mobile/v1/order

并且將普通下單和快速下單也分開:6bA28資訊網(wǎng)——每日最新資訊28at.com

/web/v1/order/create/web/v1/order/fastCreate/mobile/v1/order/create/mobile/v1/order/fastCreate

這樣可以設(shè)計成4個接口。6bA28資訊網(wǎng)——每日最新資訊28at.com

業(yè)務(wù)邏輯更清晰一些,方便后面維護。6bA28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-90672-0.html接口設(shè)計的18條軍規(guī)

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Visual Studio C#中多環(huán)境配置Web.config的詳細(xì)指南

下一篇: OSPF:動態(tài)路由的最短路徑選擇

標(biāo)簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
亚洲最新合集| 国产亚洲精品久久久| 欧美成人精品高清在线播放| 美女久久一区| 欧美激情视频一区二区三区不卡| 欧美麻豆久久久久久中文| 欧美视频在线视频| 国产精品亚洲不卡a| 国产精品成人午夜| 国产亚洲成av人片在线观看桃 | 免费亚洲视频| 欧美精品一区二区蜜臀亚洲| 国产精品第一区| 激情欧美一区二区三区| 亚洲日本aⅴ片在线观看香蕉| 一区二区久久久久| 欧美在线观看一区| 欧美电影在线观看完整版| 国产精品久久久久久av下载红粉| 国产在线精品一区二区夜色| 亚洲激情啪啪| 亚洲综合视频网| 老司机精品视频网站| 欧美日韩一区二区三区四区五区 | 在线观看国产精品网站| 一区二区三区国产精品| 久久久久久久久久久久久9999| 欧美成人一区二区| 国产九九精品视频| 亚洲乱码国产乱码精品精天堂| 欧美一区永久视频免费观看| 欧美人与性动交α欧美精品济南到| 国产人成一区二区三区影院| 亚洲看片免费| 久久久中精品2020中文| 国产精品色婷婷| 亚洲精选中文字幕| 久久久久久网站| 国产精品日韩在线一区| 亚洲精品视频在线播放| 久久精品一二三| 国产精品va在线播放我和闺蜜| **网站欧美大片在线观看| 午夜精品久久久久久久99水蜜桃 | 欧美一进一出视频| 欧美日韩你懂的| 亚洲第一二三四五区| 欧美一区二区女人| 欧美日韩亚洲一区二区三区四区| 激情91久久| 香蕉久久夜色精品国产| 欧美日韩国产系列| 亚洲国产精品成人综合色在线婷婷| 亚洲欧美日韩国产成人精品影院| 欧美精品18videos性欧美| 狠狠久久综合婷婷不卡| 亚洲欧美中日韩| 欧美偷拍一区二区| 日韩一级不卡| 欧美国产一区二区三区激情无套| 黄色国产精品| 久久精品国产2020观看福利| 国产精品永久免费视频| 亚洲一区二区三区高清| 欧美日韩人人澡狠狠躁视频| 亚洲激精日韩激精欧美精品| 久久香蕉国产线看观看av| 国产一区二区你懂的| 欧美一级久久| 国产精品一区二区久激情瑜伽| 亚洲一区二区三区国产| 国产精品高潮呻吟久久av无限| 日韩视频免费| 欧美激情一区在线| 亚洲日本va午夜在线电影| 欧美大胆人体视频| 亚洲欧洲一区二区天堂久久| 欧美成人国产| 亚洲人屁股眼子交8| 欧美肥婆在线| 亚洲精品久久久蜜桃| 欧美激情 亚洲a∨综合| 亚洲精品欧美在线| 欧美精品一区二| 99视频在线观看一区三区| 欧美日韩国产大片| 在线一区二区三区四区五区| 欧美午夜激情在线| 亚洲影视中文字幕| 国产精品毛片va一区二区三区| 亚洲欧美电影在线观看| 国产精品手机视频| 欧美一区二区视频在线观看| 国产欧美日韩一区二区三区| 欧美中文字幕视频| 欧美伊人久久| 国产在线国偷精品产拍免费yy| 久久精品一本| 1769国产精品| 欧美剧在线观看| 亚洲午夜一区二区三区| 国产精品视频免费观看| 欧美一区二区三区视频在线观看 | 一级日韩一区在线观看| 欧美视频一区在线| 午夜激情综合网| 国产亚洲精品aa午夜观看| 久久久久久亚洲综合影院红桃| 在线免费日韩片| 亚洲欧美在线另类| 国产日韩欧美综合一区| 久久久美女艺术照精彩视频福利播放| 伊伊综合在线| 欧美激情视频免费观看| 亚洲视屏在线播放| 国产亚洲精品久久久久动| 久久一本综合频道| 日韩视频二区| 国产九色精品成人porny| 久热这里只精品99re8久| 日韩午夜一区| 国产日韩亚洲| 欧美大片在线观看一区二区| 亚洲图片欧美日产| 国产在线不卡精品| 欧美日本精品| 欧美一区二区三区在线播放| 在线日韩av永久免费观看| 欧美日本三区| 久久不射中文字幕| 亚洲精品在线观看免费| 国产毛片精品视频| 欧美成人一区二区| 香蕉久久一区二区不卡无毒影院 | 亚洲国产mv| 国产精品videosex极品| 久久免费观看视频| 一区二区三区欧美| 国精品一区二区| 欧美日韩免费观看一区| 久久国产精彩视频| 99国内精品| 精品成人久久| 欧美色欧美亚洲高清在线视频| 久久久久久久一区二区| 亚洲乱码一区二区| 国产一级精品aaaaa看| 欧美精品在线观看播放| 久久成人精品一区二区三区| 亚洲精品在线电影| 国产在线视频欧美一区二区三区| 欧美日韩不卡合集视频| 久久精品国产免费看久久精品| 亚洲免费观看在线视频| 国产一区在线免费观看| 欧美亚男人的天堂| 免费人成精品欧美精品| 性刺激综合网| 亚洲天堂网在线观看| 亚洲第一在线综合网站| 国产欧美日韩精品专区| 欧美日韩久久精品| 老司机免费视频一区二区| 午夜精品www| 夜夜嗨av一区二区三区免费区| 伊甸园精品99久久久久久| 国产伦精品一区二区三| 欧美日韩精品免费在线观看视频| 久久久噜噜噜久久人人看| 午夜精品视频在线| 在线午夜精品| 亚洲人成在线观看| 亚洲大片av| 韩国欧美一区| 国产视频亚洲精品| 国产精品久久久久久超碰 | 欧美中文字幕在线观看| 国产精品99久久久久久www| 亚洲经典自拍| 在线欧美电影| 激情偷拍久久| 国产一区二三区| 国产日韩精品电影| 国产精品拍天天在线| 欧美日一区二区在线观看| 欧美成人免费网站| 另类激情亚洲| 久久亚洲欧洲| 久久久免费av| 久久久久中文| 久久精品最新地址| 久久黄色级2电影| 欧美在线观看视频一区二区| 亚洲欧美激情在线视频| 亚洲一区二区免费看| 亚洲一区二区欧美日韩| 亚洲天堂网在线观看| 亚洲一级特黄| 亚洲一区二区精品| 亚洲伊人一本大道中文字幕| 亚洲少妇中出一区| 亚洲一二三区视频在线观看| 亚洲视频欧美在线| 亚洲伊人伊色伊影伊综合网|