小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

3條原則,16個小點,幫你寫出一個優(yōu)秀的對外接口!

 昵稱10087950 2022-06-16 發(fā)布于江蘇

圖片

來源:blog.csdn.net/weixin_42304845/article/

details/109305740

對外API接口設計

  • 安全性
    • 1、創(chuàng)建appid,appkey和appsecret
    • 2、Token:令牌(過期失效)
    • 3、Post請求
    • 4、客戶端IP白名單 (可選)
    • 5、單個接口針對IP限流(令牌桶限流,漏桶限流,計數(shù)器限流)
    • 6、記錄接口請求日志
    • 7、采用Https
    • 8、數(shù)據(jù)合法性校驗
    • 9、密碼查詢(加緩存,key使用客戶號)
    • 10、接口調(diào)用失敗告警
    • 11、高可用:服務器集群部署(2-3)
    • 12、變更軌跡,保存上次密碼?
    • 13、查詢密碼和交易密碼是否分兩條?
  • 冪等性
  • 數(shù)據(jù)規(guī)范
    • 版本控制
    • 響應狀態(tài)碼規(guī)范
    • 統(tǒng)一響應數(shù)據(jù)格式

安全性

1、創(chuàng)建appid,appkey和appsecret

  • appid:應用的唯一標識
  • appkey:公鑰=賬號
  • appsecret:私鑰=密碼

1、設計一個認證系統(tǒng),專用于創(chuàng)建第三方接入應用的賬號信息,用于生成appid,appkey和appsecret,然后發(fā)appkey和appsecret給第三方接入應用,用于做認證

ps:appkey和appsecret成對出現(xiàn)的機制,目的在于首次驗證(類似登錄場景),用來申請一個token,之后請求數(shù)據(jù)請求,就直接帶token請求服務端認證即可。

2、第三方接入應用自行注冊,需要校驗企業(yè)信息合法性(暫不考慮)

2、Token:令牌(過期失效)

1、第三方接入應用獲取第一步中的appkey和appsecret

2、請求認證系統(tǒng)獲取nonce隨機數(shù),服務端在緩存中存放下nonce

3、客戶端拿到這個隨機數(shù)后將其與appsecret拼接生appsecretStr,然后調(diào)用生成簽名方法,傳入appsecretStr,appkey,nonce,url(備注:可轉大寫,轉小寫,追加特殊字符,然后加密)進行非可逆加密(MD5/SHA1等),生成簽名A。接著構造請求把簽名放到請求頭signature,post請求體中放入?yún)?shù):appkey,nonce,timestamp,url根據(jù)request.getRequestURI()獲取,調(diào)用認證接口

4、認證系統(tǒng)獲取請求后,查詢根據(jù)appkey查詢緩存中的nonce,判斷是否存在,不存在則提示不合法請求;判斷是否相等,不等則為惡意請求。

判斷timestamp的時效性,防止惡意請求:數(shù)據(jù)包中的客戶端時間戳字段,然后用服務器當前時間去減客戶端時間,看結果是否在一個區(qū)間內(nèi)。

先根據(jù)appkey查詢數(shù)據(jù)庫,判斷是否存在,如不存在則提示不合法用戶;反之,查出appsecret,按照客戶端的簽名加密方式,進行加密,生成簽名B,比較A和B,如果一樣則生成token,失效緩存中的nonce,返回token。

3、Post請求

4、客戶端IP白名單 (可選)

5、單個接口針對IP限流(令牌桶限流,漏桶限流,計數(shù)器限流)

限流是為了更好的維護系統(tǒng)穩(wěn)定性。使用redis進行接口調(diào)用次數(shù)統(tǒng)計,ip+接口地址作為key,訪問次數(shù)作為value,每次請求value+1,設置過期時長來限制接口的調(diào)用頻率

6、記錄接口請求日志

使用aop全局記錄請求日志,快速定位異常請求位置,排查問題原因。

7、采用Https

1、服務端配置SSL證書

2、客戶端調(diào)用https工具類忽略服務端證書校驗

8、數(shù)據(jù)合法性校驗

9、密碼查詢(加緩存,key使用客戶號)

1、密碼更新時,更新redis;

2、緩存查不到,查數(shù)據(jù)庫,同時更新緩存;

3、密碼在緩存和數(shù)據(jù)庫都需要加密,返回時才解密(或者是返回客戶端時,客戶端自行解密)

10、接口調(diào)用失敗告警

11、高可用:服務器集群部署(2-3)

客戶端重試機制

12、變更軌跡,保存上次密碼?

13、查詢密碼和交易密碼是否分兩條?

冪等性

冪等性是指任意多次請求的執(zhí)行結果和一次請求的執(zhí)行結果所產(chǎn)生的影響相同。說的直白一點就是查詢操作無論查詢多少次都不會影響數(shù)據(jù)本身,因此查詢操作本身就是冪等的。但是新增操作,每執(zhí)行一次數(shù)據(jù)庫就會發(fā)生變化,所以它是非冪等的。

冪等問題的解決有很多思路,這里講一種比較嚴謹?shù)?。提供一個生成隨機數(shù)的接口,隨機數(shù)全局唯一。調(diào)用接口的時候帶入隨機數(shù)。

第一次調(diào)用,業(yè)務處理成功后,將隨機數(shù)作為key,操作結果作為value,存入redis,同時設置過期時長。

第二次調(diào)用,查詢redis,如果key存在,則證明是重復提交,直接返回錯誤。

數(shù)據(jù)規(guī)范

版本控制

一套成熟的API文檔,一旦發(fā)布是不允許隨意修改接口的。這時候如果想新增或者修改接口,就需要加入版本控制,版本號可以是整數(shù)類型,也可以是浮點數(shù)類型。一般接口地址都會帶上版本號,http://ip:port//v1/list

響應狀態(tài)碼規(guī)范

圖片
圖片

統(tǒng)一響應數(shù)據(jù)格式

為了方便給客戶端響應,響應數(shù)據(jù)會包含三個屬性,狀態(tài)碼(code)、信息描述(message)、響應數(shù)據(jù)(data)。客戶端根據(jù)狀態(tài)碼及信息描述可快速知道接口,如果狀態(tài)碼返回成功,再開始處理數(shù)據(jù)。

響應結果定義及常用方法:

圖片
圖片

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多