@RequestParam是否仅适用于GetMapping和PostMapping?附映射代码示例
@RequestParam 是否仅支持 GetMapping 和 PostMapping?
当然不是!@RequestParam 并不局限于 @GetMapping 和 @PostMapping,它可以和Spring MVC中所有的请求映射注解配合使用——包括你代码里的 @PutMapping、@PatchMapping、@DeleteMapping 在内。
为什么它能适配所有请求方法?
@RequestParam 的核心作用是从请求的参数集合中提取值,不管你用的是哪种HTTP请求方法,只要请求中携带了对应的参数(比如URL查询字符串里的参数,或者POST/PUT/PATCH等方法提交的表单参数),Spring MVC都能通过这个注解把参数值绑定到方法的参数上。
比如你写的这段PATCH请求映射代码:
@PatchMapping("rparam") public void patch(@RequestParam("test") String test) { System.out.println(test); }
当你发送一个PATCH请求到 /rparam?test=hello_world 时,Spring MVC会正常将test参数的hello_world值绑定到方法的test变量中,控制台也会输出对应的内容。同理,PUT、DELETE请求只要携带了符合要求的参数,@RequestParam都能正常工作。
小提醒
不过要注意,部分HTTP客户端在发送PUT、DELETE请求时,默认不会像POST那样自动携带表单参数,这种情况下通常会把参数放在URL的查询字符串中(和GET请求的方式一致),或者通过其他方式传递(比如请求体),但@RequestParam只负责处理查询参数或者表单类型的请求参数哦。
内容的提问来源于stack exchange,提问作者ivan
相关产品推荐
相关产品推荐

