互聯網微服務API應用編碼規範

技術選型:

spring boot(Spring DATA+Spring MVC+slf+jackson), JDK1.8

接口約定

  • 使用RestFul API接口;URL中不要使用動詞,如GET,ADD,CREATE等;URL中儘量包含資源唯一標識。參考《互聯網開發常識譜–REST》
  • 返回參數分成功和失敗等不同類型的數據格式。
  • 成功返回http status200,參數中不要包含的message_code,message等流程控制信息,而是直接對應業務邏輯對象。
  • 業務邏輯失敗返回http status 400,返回不同的失敗提示信息和失敗代碼。

異常處理:

  • 如果沒有業務邏輯處理,則不要捕獲異常,sevice層避免僅爲打印日常的try-catch。
  • 在線程邊界必須捕獲異常輸出日誌,異常日誌輸出必須打印堆棧,並打印關鍵參數。
  • 使用ControllerAdvice攔截所有異常,做http狀態轉換,失敗提示信息和失敗代碼轉換。參考《spring boot 最佳實踐(四)–Spring MVC》
  • 如果使用異步線程或者自建線程池,必須在線程發起的入口捕獲所有異常,並打印日誌。

業務邏輯編碼:

  • 業務邏輯代碼不能寫在controller和DAO中。
  • 基礎參數校驗在DTO中定義,在controller參數注入時自動校驗。參考《spring boot 最佳實踐(二)–使用Bean Validation》
  • 避免無意義的service層接口聲明,如果一個service只有一個實現就不要抽象出接口。
  • Info及以上禁止輸出大對象,但必須打印關鍵參數。參數使用“{}”佔位符而不是用“+”字符串拼接
  • 方法體職責單一,減少嵌套層數,一個方法體不能超過100行。
  • 禁止在service層通過動態拼接sql字符串查詢DB,使用JPA的Criteria API。
  • 禁止魔法數字,儘量使用枚舉類型替代靜態常量。
  • 禁止使用類似Constants的全局常量類,領域對象相關的常量在對象實體類中定義,與業務邏輯相關的常量在對應的service中定義。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章