springboot中@RequestParam和@PathVariable區(qū)別
1. 參數(shù)位置不同
注解 | 參數(shù)位置 | 示例 URL |
---|---|---|
@RequestParam | URL 查詢字符串 (?之后) | /users?name=John&age=25 |
@PathVariable | URL 路徑部分 ({}占位符) | /users/{id}/orders/{orderId} |
2. 核心用途不同
注解 | 主要用途 | 典型場(chǎng)景 |
---|---|---|
@RequestParam | 獲取可選或必選的查詢參數(shù) | 過濾、排序、分頁等查詢條件 |
@PathVariable | 獲取RESTful 資源標(biāo)識(shí)符 | 資源ID、唯一標(biāo)識(shí)等路徑變量 |
3. 功能特性對(duì)比
特性 | @RequestParam | @PathVariable |
---|---|---|
是否必需 | 可通過 required=false 設(shè)為可選 | 默認(rèn)必需(路徑必須包含) |
默認(rèn)值 | 支持 defaultValue | 不支持默認(rèn)值 |
多值支持 | 支持?jǐn)?shù)組/集合 (如 List<String>) | 不支持多值(單個(gè)路徑變量) |
參數(shù)名稱靈活性 | 可通過 value 指定參數(shù)名 | 必須與路徑占位符名稱匹配 |
RESTful 設(shè)計(jì) | 非 RESTful 核心元素 | RESTful 資源定位的關(guān)鍵組成部分 |
4. 代碼示例對(duì)比
@RequestParam 示例:
// 獲取查詢參數(shù):/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 規(guī)范 | 用于非資源屬性 | 用于資源標(biāo)識(shí)符 |
冪等性 | 不影響資源標(biāo)識(shí) | 直接標(biāo)識(shí)資源 |
緩存友好度 | 查詢參數(shù)不影響緩存鍵 | 路徑變量是緩存鍵的一部分 |
SEO 友好度 | 對(duì)SEO不友好(動(dòng)態(tài)參數(shù)) | 對(duì)SEO更友好(靜態(tài)路徑) |
到此這篇關(guān)于springboot中@RequestParam和@PathVariable區(qū)別的文章就介紹到這了,更多相關(guān)springboot @RequestParam @PathVariable內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何自定義feign調(diào)用實(shí)現(xiàn)hystrix超時(shí)、異常熔斷
這篇文章主要介紹了自定義feign調(diào)用實(shí)現(xiàn)hystrix超時(shí)、異常熔斷的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06java如何使用fastjson修改多層嵌套的Objectjson數(shù)據(jù)
這篇文章主要介紹了java如何使用fastjson修改多層嵌套的Objectjson數(shù)據(jù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05基于Jenkins+Maven+Gitea+Nexus搭建CICD環(huán)境的方式
這篇文章主要介紹了基于Jenkins+Maven+Gitea+Nexus從0到1搭建CICD環(huán)境,大家都知道Nexus是一套“開箱即用”的系統(tǒng)不需要數(shù)據(jù)庫,它使用文件系統(tǒng)加Lucene來組織數(shù)據(jù),需要的朋友可以參考下2022-01-01如何解決getReader() has already been called&
這篇文章主要介紹了如何解決getReader() has already been called for this request問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05feign實(shí)現(xiàn)傳遞參數(shù)的三種方式小結(jié)
這篇文章主要介紹了feign實(shí)現(xiàn)傳遞參數(shù)的三種方式小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06Java使用正則表達(dá)式檢索、替換String中特定字符和正則表達(dá)式的一切
這篇文章主要給大家介紹了關(guān)于Java使用正則表達(dá)式檢索、替換String中特定字符和正則表達(dá)式的一切,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09