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

Posted luciusliang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记一次在 Get 请求参数为 Null 值的折腾相关的知识,希望对你有一定的参考价值。

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

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

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

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

技术图片

 

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

技术图片

 

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

以上是关于记一次在 Get 请求参数为 Null 值的折腾的主要内容,如果未能解决你的问题,请参考以下文章

【求助】关于JQuery获取不到值,请求参数为Null

记一次在数据库中查询:“包含”或者“仅包含”某些商品的订单的方法

js动态添加option 第一次能添加成功,第二次在请求的时候就 Cannot read property 'options' of null

记一次在deployment中添加灰度暂停功能

记一次在deployment中添加灰度暂停功能

记一次在win2008下添加nginx自启动服务的操作