记一次在 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 值的折腾的主要内容,如果未能解决你的问题,请参考以下文章
记一次在数据库中查询:“包含”或者“仅包含”某些商品的订单的方法
js动态添加option 第一次能添加成功,第二次在请求的时候就 Cannot read property 'options' of null