@RequestParam与@PathVariable的区别

@RequestParam和@PathVariable都能够完成类似的功能。因为本质上,它们都是用户的输入,只不过输入的部分不同,一个在URL路径部分,另一个在参数部分。

    通过@PathVariable,例如/blogs/1

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

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

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

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

例如我们会这样设计URL:

    /blogs/{blogId}

    /blogs?state=publish 而不是/blogs/state/publish来表示处于发布状态的博客文章

@RequestParam的用法:

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

    一旦我们在方法中定义了@RequestParam变量,如果访问的URL中不带有相应的参数,就会抛出异常。这是显然的,Spring尝试帮我们进行绑定,然而没有成功。但有的时候,参数确实不一定永远都存在,这是我们可以通过定义required属性:

@RequestParam(name="id",required=false)

    当然,在参数不存在的情况下,可能希望变量有一个默认值:

@RequestParam(name="id",required=false,defaultValue="0")

@PathVariable的用法:

@RequestMapping("/testPathVariable/{id}")
public String testPathVariable(@PathVariable("id") Integer id){
   System.out.println("testPathVariable:"+id);
   return SUCCESS;
}

转载于:https://my.oschina.net/langwanghuangshifu/blog/2052114

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值