记一次在 Get 请求参数为 Null 值的折腾

先说主要原因,是因为一个 NgZerro 的 Select 组件,需要显示 placeHolder 文字,初始值为 null,然后直接绑定到查询参数中,传输到后端导致 BadRequest,参数解析失败。

原因也很简单。。。Get请求直接带的  localhost:4200/api/xxx?parameter=null   这里的 parameter 会被 net core 中的 DefaultModelBinder 转换为字符串 'null',然后就是悲剧了。

解决办法也很简单,要么人为的编码控制,不要有 null 的参数存在,但是这个并不能说完全就会记得(人毕竟会容易犯错),所以就只能从 AOP 的角度去过滤了。

前端 Angular 通过 HttpInterceptor 去拦截所有请求

记一次在 Get 请求参数为 Null 值的折腾

 

 后端自己写了个 ModelBinder 去过滤这种数据

记一次在 Get 请求参数为 Null 值的折腾

 

 至于为什么要这么麻烦去做,主要是为了容错率,人总是会犯错,那么就增加容错率,毕竟人不是机器。

上一篇:A good debug parameter - sap-ds-debug=true


下一篇:CIVL3431[6431*] – Land Surface Processes and Management