當咱們開發一個接口時須要注意些什麼

做爲一個 Web 應用開發人員,平時工做中最多的工做場景就是開發接口給前端調用或者關聯繫統調用。接口寫了這麼多,不知道你們有沒有總結過在開發一個接口時須要注意哪些細節。下面列出我本身的一些總結,每次寫接口時都用這些注意點「掃描」下本身的接口,你的接口質量將會上升一個臺階。前端

能完成正常的業務功能

這個點應該不用多說了,咱們的接口就是爲了完成業務功能的,這個是必需要的。程序員

但若是你的接口僅僅考慮了正常的流程,一旦發生任何異常就運行不起來了,那麼你的接口不是一個合格的接口。數據庫

若是全部用戶請求都符合接口預期、全部網絡調用都不會超時、全部系統都不會down機,全部系統都能承載大併發的流量,那麼程序員的工做量將減輕一大半。「程序員大部分時間都在解決異常」,這句話我想你必定聽過。緩存

其實下面纔是本文的重點,怎麼讓本身的接口有更高的健壯性、更高的性能以及更高的擴展性,這是咱們開發接口中不容忽視的地方。性能優化

異常處理

在你這個接口涉及的每一個環節,你都要考慮到會不會發生異常。若是異常發生了,你要怎麼處理?你的數據要不要回滾?Service是否是已經開啓了事物?事務的隔離級別是否正確?你的代碼有沒有全局異常處理機制?網絡

接口參數檢查機制

不少系統異常都是由於用戶傳的參數不對致使格式化錯誤、空指針錯誤等。因此咱們要將錯誤扼殺在源頭,對用戶傳過來的參數作嚴格的檢查,在controller層作參數校驗。這個能夠結合Spring的Validate機制。併發

打印準確合理的日誌

這邊打日誌的原則是不打多餘的日誌,打印的日誌能讓本身看清系統的運行狀態,出問題是能迅速定位問題。異步

接口權限配置

你的接口哪些角色的用戶能夠訪問,用戶不登錄是否能夠訪問。分佈式

數據權限問題

若是你的接口是一個查詢接口,你就不該該查出當前用戶沒有權限訪問的數據。性能

接口性能優化

  • 使用緩存;
  • 數據庫加索引;
  • 儘可能不要在循環中調用數據庫;
  • 儘可能不要多張表關聯查詢;
  • 考慮使用異步線程;
  • 提高系統配置(窮途末路的方法)

提高接口性能的方法有不少,這邊只是舉了幾個通用的列子。結合你具體的業務場景,有時調整下業務的執行流程也能大大提高用戶體驗。好比銀行開戶的流程能夠分爲授信和簽約兩步,其中授信是比較耗時的操做,那咱們能夠考慮在用戶提交身份證材料時觸發授信操做,用戶提交完材料,授信操做可能已經完成了。

接口冪等性

考慮下你的接口是否要保持冪等

接口自測的問題

不少開發人員都不會想測試場景來測試本身的接口。我本身以爲咱們想的測試場景要夠全,甚至要比測試還多。個人建議是在開發環境必定要本身自測一下,本身想各類測試場景,造各類數據進行測試,同時將本身造的數據保存下來,方便後續用到。

一些其餘細節

  • 若是涉及到分佈式系統要考慮數據一致性問題。
  • 擴展性優化,你的代碼是否有很好的擴展性。
  • 開發環境改了代碼,必定要到測試環境測試一下。(由於測試環境和開發環境可能有很大的區別,好比jdk版本,代碼不必定能跑起來)
相關文章
相關標籤/搜索