當我們開發一個介面時需要注意些什麼

程式設計師自由之路發表於2020-11-09

作為一個 Web 應用開發人員,平時工作中最多的工作場景就是開發介面給前端呼叫或者關聯絡統呼叫。介面寫了這麼多,不知道大家有沒有總結過在開發一個介面時需要注意哪些細節。下面列出我自己的一些總結,每次寫介面時都用這些注意點“掃描”下自己的介面,你的介面質量將會上升一個臺階。

能完成正常的業務功能

這個點應該不用多說了,我們的介面就是為了完成業務功能的,這個是必須要的。

但如果你的介面僅僅考慮了正常的流程,一旦發生任何異常就執行不起來了,那麼你的介面不是一個合格的介面。

如果所有使用者請求都符合介面預期、所有網路呼叫都不會超時、所有系統都不會down機,所有系統都能承載大併發的流量,那麼程式設計師的工作量將減輕一大半。“程式設計師大部分時間都在解決異常”,這句話我想你一定聽過。

其實下面才是本文的重點,怎麼讓自己的介面有更高的健壯性、更高的效能以及更高的擴充套件性,這是我們開發介面中不容忽視的地方。

異常處理

在你這個介面涉及的每個環節,你都要考慮到會不會發生異常。如果異常發生了,你要怎麼處理?你的資料要不要回滾?Service是不是已經開啟了事物?事務的隔離級別是否正確?你的程式碼有沒有全域性異常處理機制?

介面引數檢查機制

很多系統異常都是因為使用者傳的引數不對導致格式化錯誤、空指標錯誤等。所以我們要將錯誤扼殺在源頭,對使用者傳過來的引數做嚴格的檢查,在controller層做引數校驗。這個可以結合Spring的Validate機制。

列印準確合理的日誌

這邊打日誌的原則是不打多餘的日誌,列印的日誌能讓自己看清系統的執行狀態,出問題是能迅速定位問題。

介面許可權配置

你的介面哪些角色的使用者可以訪問,使用者不登陸是否可以訪問。

資料許可權問題

如果你的介面是一個查詢介面,你就不應該查出當前使用者沒有許可權訪問的資料。

介面效能優化

  • 使用快取;
  • 資料庫加索引;
  • 儘量不要在迴圈中呼叫資料庫;
  • 儘量不要多張表關聯查詢;
  • 考慮使用非同步執行緒;
  • 提升系統配置(窮途末路的方法)

提升介面效能的方法有很多,這邊只是舉了幾個通用的列子。結合你具體的業務場景,有時調整下業務的執行流程也能大大提升使用者體驗。比如銀行開戶的流程可以分為授信和簽約兩步,其中授信是比較耗時的操作,那我們可以考慮在使用者提交身份證材料時觸發授信操作,使用者提交完材料,授信操作可能已經完成了。

介面冪等性

考慮下你的介面是否要保持冪等

介面自測的問題

很多開發人員都不會想測試場景來測試自己的介面。我自己覺得我們想的測試場景要夠全,甚至要比測試還多。我的建議是在開發環境一定要自己自測一下,自己想各種測試場景,造各種資料進行測試,同時將自己造的資料儲存下來,方便後續用到。

一些其他細節

  • 如果涉及到分散式系統要考慮資料一致性問題。
  • 擴充套件性優化,你的程式碼是否有很好的擴充套件性。
  • 開發環境改了程式碼,一定要到測試環境測試一下。(因為測試環境和開發環境可能有很大的區別,比如jdk版本,程式碼不一定能跑起來)

相關文章