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

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

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

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

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

 

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

 

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

posted @ 2019-09-26 10:57  一直踩坑的码农  阅读(8414)  评论(0编辑  收藏  举报