Spring MVC特性,命令对象(Command Object)绑定
报错提示gid==null,接收不到参数,原因是在Apifox中是以Body中json的方式提交数据,然后把Apifox中的请求改为Post,并且将admin中的ShortLinkController相应的请求改为Post+@RequestBody,测试通过了;
后面又将Apifox中的请求改为Get,将admin中的ShortLinkController相应的请求改为Get并且去掉@RequestBody,也通过了测试。所以就是请求与请求格式不匹配的问题。
这里会出错是因为 @GetMapping("/api/short-link/admin/v1/page") public Result<IPage<LinkPageRespDTO>> pageLink(LinkPageReqDTO requestParam)是请求了一个对象,所以想当然就用上body+@RequestBody
但是在Spring Boot中,当在Controller方法参数中使用一个自定义对象(如LinkPageReqDTO)并且没有添加任何注解(如@RequestParam或@RequestBody)时,Spring会默认使用参数绑定(Data Binding)机制来自动将HTTP请求参数映射到该对象的字段上。这是Spring MVC的一个特性,称为命令对象(Command Object)绑定。
发布评论