java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > springboot @RequestParam @PathVariable

springboot中@RequestParam和@PathVariable区别

作者:ruan114514

本文主要介绍了springboot中@RequestParam和@PathVariable区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1. 参数位置不同

注解参数位置示例 URL
@RequestParamURL 查询字符串 (?之后)/users?name=John&age=25
@PathVariableURL 路径部分 ({}占位符)/users/{id}/orders/{orderId}

2. 核心用途不同

注解主要用途典型场景
@RequestParam获取可选或必选的查询参数过滤、排序、分页等查询条件
@PathVariable获取RESTful 资源标识符资源ID、唯一标识等路径变量

3. 功能特性对比

特性@RequestParam@PathVariable
是否必需可通过 required=false 设为可选默认必需(路径必须包含)
默认值支持 defaultValue不支持默认值
多值支持支持数组/集合 (如 List<String>)不支持多值(单个路径变量)
参数名称灵活性可通过 value 指定参数名必须与路径占位符名称匹配
RESTful 设计非 RESTful 核心元素RESTful 资源定位的关键组成部分

4. 代码示例对比

@RequestParam 示例:

// 获取查询参数:/search?keyword=spring&page=2
@GetMapping("/search")
public Result search(
    @RequestParam String keyword, 
    @RequestParam(defaultValue = "1") int page) {
    // ...
}

@PathVariable 示例:

// 获取路径变量:/users/123/orders/456
@GetMapping("/users/{userId}/orders/{orderId}")
public Order getOrder(
    @PathVariable Long userId,
    @PathVariable String orderId) {
    // ...
}
原则@RequestParam@PathVariable
RESTful 规范用于非资源属性用于资源标识符
幂等性不影响资源标识直接标识资源
缓存友好度查询参数不影响缓存键路径变量是缓存键的一部分
SEO 友好度对SEO不友好(动态参数)对SEO更友好(静态路径)

到此这篇关于springboot中@RequestParam和@PathVariable区别的文章就介绍到这了,更多相关springboot @RequestParam @PathVariable内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:
阅读全文