为什么限制在GETS中使用@combine
在GETS请求中使用@combine时得到了这样的提示:
"msg": "StandardAdvice:{} 里的 @combine:value 不合法!DELETE,GETS,HEADS 请求不允许传 @combine:value !"
查代码发现,这个检查逻辑是硬编码在AbstractSQLConfig类中的。
为什么在这些类型的请求中限制@combine的使用呢?
防止前端传参越权操作,例如把后端设置的条件 AND 连接改为 OR 连接
防止前端传参越权操作,例如把后端设置的条件 AND 连接改为 OR 连接
有些业务场景需要OR连接的查询。在AbstractSQLConfig做检查,后端也无法添加@combine,检查点能否前移呢?
可以的,把 AbstractSQLConfig 里的检查移到 AbstractVerifier,判断 JSONRequest.KEY_COMBINE.equals(rk) 就抛异常
https://github.com/Tencent/APIJSON/blob/master/APIJSONORM/src/main/java/apijson/orm/AbstractVerifier.java#L1006

这样就可以实现前端不能传,但后端能在 Request 表指定 @combine 了
@aldag
6.0.0 已支持后端在 Request 表中为 GETS/PUT/DELTE 的请求配置 @combine,感谢 @cloudAndMonkey 的贡献
https://github.com/Tencent/APIJSON/pull/493