@PathVariable和@RequestParam的区别

本文详细介绍了Spring MVC中@PathVariable和@RequestParam注解的用途和区别。@PathVariable用于从URL路径中获取参数,适合标识特定资源,而@RequestParam则从请求参数中获取值,适用于资源筛选。在设计URL时,推荐使用@PathVariable表示资源ID,用@RequestParam进行条件过滤。选择使用哪种注解取决于URL设计和业务场景。
摘要由CSDN通过智能技术生成

@PathVariable和@RequestParam的区别

参考博客

@PathVariable

@RequestMapping(value = "/user/{username}")
@ResponseBody
public String userProfile(@PathVariable(value = "username") String username) {
    return "user = " + username;
}

在上面的例子中,当@Controller处理HTTP请求时,userProfile的参数username会自动设置为URL中对应变量username(同名赋值)的值。例如,当HTTP请求为/user/fpc,URL变量username的值fpc就会被赋值给函数参数username,函数的返回值是userfpc。

在这里插入图片描述

@RequestParam

@RequestMapping(value = "/user")
public String getUserBlog(@RequestParam(value = "id") int id) {
    return "UserId = " + id;
}

通过注解@RequestParam可以轻松地将URL中的参数绑定到处理函数方法的变量中,当我们访问/user/?id=123时,SpringMVC帮助我们将Request参数id的值绑定到了处理函数的参数blogId上。这样就能够轻松获取用户输入,并根据它的值进行计算并返回了

在这里插入图片描述

相同点与区别

@RequestParam和@PathVariable都能够完成类似的功能——因为本质上,它们都是用户的输入,只不过输入的部分不同,一个在URL路径部分,另一个在参数部分。要访问一篇博客文章,这两种URL设计都是可以的:

  • 通过@PathVariable,例如/blogs/1
  • 通过@RequestParam,例如blogs?blogId=1

那么究竟应该选择哪一种呢?建议:

1、当URL指向的是某一具体业务资源(或资源列表),例如博客,用户时,使用@PathVariable

2、当URL需要对资源或者资源列表进行过滤,筛选时,用@RequestParam

例如我们会这样设计URL:

  • /blogs/{blogId}
  • /blogs?state=publish而不是/blogs/state/publish来表示处于发布状态的博客文章
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

存量美团骑手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值