@RequestParam和@PathVariable的区别及相应的应用场景

本文详细对比了@RequestParam和@PathVariable在Spring MVC中处理HTTP请求参数的不同方式。RequestParam适用于查询字符串参数,而PathVariable则用于路径变量,常见于RESTful风格的API设计。文章通过具体示例阐述了两种注解的应用场景及其实现细节。

引用自:https://yq.aliyun.com/articles/653657

@RequestParam和@PathVariable这两者之间区别不大,主要是请求的URL不一样

用@RequestParam请求接口时,URL是:http://www.test.com/user/getUserById?userId=1

用@PathVariable请求接口时,URL是:http://www.test.com/user/getUserById/2

(1)@PathVariable示例:

@GetMapping(value="getUserById/{userId}",produces="application/json;charset=utf-8")
public Object getUserById(@PathVariable String userId) {
    
    JSONObject json  = new JSONObject();
    
    if(!StrUtil.isEmpty(userId)) {
        User user = userService.getUserById(userId);
        json.put("returnCode", "000000");
        json.put("returnMsg", "success");
        json.put("user", user);
    }else {
        json.put("returnCode", "111111");
        json.put("returnMsg", "error");
    }
    return json;

}

主要应用场景是:不少应用为了实现RestFul的风格,采用@PathVariable这种方式。

例如优快云:

当然了,有些时候也不是为了RestFul风格而采用这种方式,有些时候觉得?userId=1&&status=1等参数传递方式不是特别好看或者是看着不爽。

(2)@RequestParam示例:

@GetMapping(value="getUserById",produces="application/json;charset=utf-8")
public Object getUserById(@RequestParam String userId) {
    
    JSONObject json  = new JSONObject();
    
    if(!StrUtil.isEmpty(userId)) {
        User user = userService.getUserById(userId);
        json.put("returnCode", "000000");
        json.put("returnMsg", "success");
        json.put("user", user);
    }else {
        json.put("returnCode", "111111");
        json.put("returnMsg", "error");
    }
    return json;

}

应用场景:这种方式应用也非常广,像优快云或者是博客园都在用它,这里就不贴图了,经常浏览博客和新闻都能看到。

最后,你如果问我哪种方式比较好,我的回答是,根据业务场景的需求决定使用其中一种或者是结合使用。不过它们都有一个共同点,那就是都是可见。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值