最近學習《阿里巴巴java開發手冊》
第七章控制語句中,第6點提到了入參保護,原文如下:
6. 【推薦】接口入參保護,這種場景最常見的是用於做批量操作的接口。
工作中很少提到“入參保護”這個詞,更多的是“參數校驗”的說法;談下個人對接口入參保護的理解:
1、接口入參保護,“保護”的是服務端應用,即接口提供方,最常見的做法就是校驗入參的有效值范圍和設置批量操作白名單;
比如,接口入參中包含日期時,校驗日期必須在N天范圍內,或者請求返回的記錄總數必須在X條以內(比如10W條,否則縮小請求查詢的記錄范圍),或者請求返回的記錄必須分頁查詢返回;
開發手冊中,尤其提到的場景就是批量操作,因為批量操作非常耗時耗資源(服務端),批量操作的批量數應該有上限,而不是無限的。假如客戶端請求一次批量操作10W筆轉賬訂單,服務器應該果斷拒絕,很不是很SB的忠實執行,會對服務端造成嚴重影響的批量請求,服務器端應做好保護性編程,必要時應直接失敗,並在Result中返回明確的errorCode和errorMsg;
而且,對應批量操作,實際應用中還會配置批量操作白名單!
2、入參保護,一般都是通過衛語句實現:if(請求記錄>10000條) return;直接返回。