阿里巴巴java开发手册 阅读

入参保护

第七章控制语句中,第6点提到了入参保护,原文如下:

  1. 【推荐】接口入参保护,这种场景最常见的是用于做批量操作的接口。

工作中很少提到“入参保护”这个词,更多的是“参数校验”的说法;谈下个人对接口入参保护的理解:

1、接口入参保护,“保护”的是服务端应用,即接口提供方,最常见的做法就是校验入参的有效值范围和设置批量操作白名单;

  比如,接口入参中包含日期时,校验日期必须在N天范围内,或者请求返回的记录总数必须在X条以内(比如10W条,否则缩小请求查询的记录范围),或者请求返回的记录必须分页查询返回;

  开发手册中,尤其提到的场景就是批量操作,因为批量操作非常耗时耗资源(服务端),批量操作的批量数应该有上限,而不是无限的。假如客户端请求一次批量操作10W笔转账订单,服务器应该果断拒绝,很不是很SB的忠实执行,会对服务端造成严重影响的批量请求,服务器端应做好保护性编程,必要时应直接失败,并在Result中返回明确的errorCode和errorMsg;

  而且,对应批量操作,实际应用中还会配置批量操作白名单!

2、入参保护,一般都是通过卫语句实现:if(请求记录>10000条) return;直接返回。