后端自己写完接口后,我都是用swagger测试的。对于Get方式类似分页,过滤,排序这种字段,我喜欢加上默认值。如下:
要么就是在属性后直接赋值,要么就构造函数赋值这两种。swagger不传参调用接口的请求URL是: http://localhost:5144/api/QueryString?Age=18
不需要传的参数,swagger没有在URL上做拼接,之前没注意这个细节。直到前端给我说他用Name默认值排序没有预期的效果。他前端请求URL:http://localhost:5144/api/QueryString?Name=&Age=18
好像从URL上看,也没问题。我以为这样,映射到Dto上依然能使用默认值。实际上却不然,QueryString传了Name=。映射之后的属性值就是Null。示例如下:
目前没想到对于前后端都优雅的做法。
1.让前端把需要默认值的,URL不要加上。(还是让前端感知到了默认值的事,跟他们自己显式指定区别不大了。)
2.我在代码或者Filter在做一层,如果是Null值就赋值成默认值。