教你如何替換@PathVariable中的變數
替換@PathVariable的變數
因為要對介面進行統計, 而專案中用到了@PathVariable的註解, 也就是uri中攜帶請求引數的方式. 導致一個介面統計出來很多個請求, 比如 /api/get/1, /api/get/2 …
在網上找到可以透過
MappathVariables = (Map) request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE);
拿到這個PathVariable引數. 於是初步程式碼如下, 將/api/get/{id} 這個變數替換成常量{x}.
import com.google.common.base.Joiner; import javax.servlet.*; /** * 獲取 去除掉 PathVariable 後的uri * @param request * @return */ private String getPureUri(HttpServletRequest request) { String url = request.getRequestURI(); MappathVariables = (Map) request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE); if (pathVariables != null && !pathVariables.isEmpty()){ String[] split = url.split("/"); for (String pathVal : pathVariables.values()) { for (int i = split.length - 1; i >= 0; i--) { if (split[i].equals(pathVal)){ //替換成{x},也可以直接替換成""去掉 split[i] = "{x}"; break; } } } url = Joiner.on("/").join(split); } return url; }
@pathvariable註解的使用
帶佔位符的 URL 是 Spring3.0 新增的功能,該功能在SpringMVC 向 REST 目標挺進發展過程中具有里程碑的意義。透過 @PathVariable 可以將 URL 中佔位符引數繫結到控制器處理方法的入參中:URL 中的 {xxx} 佔位符可以透過
@PathVariable("xxx") 繫結到操作方法的入參中。
//@GetMapping是一個組合註解,是@RequestMapping(method = RequestMethod.GET)的縮寫 @GetMapping("/getUserById/{id}") public User getUser(@PathVariable("id") Long userId){ return userService.selectUserById(userId); }
不需要使用問號傳參,不需要寫key=valuel,直接寫value即可.
若方法引數名稱和需要繫結的uri template中變數名稱一致時,可以簡寫:
//@GetMapping是一個組合註解,是@RequestMapping(method = RequestMethod.GET)的縮寫。 @GetMapping("/getUserByName/{userName}") public User getUserByName(@PathVariable String userName){ return userService.selectUserByUserName(userName); }
以上為個人經驗,希望能給大家一個參考。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2841537/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 教你如何用 openresty 完美替換 nginxRESTNginx
- EOF 如何防止多行寫入檔案變數替換變數
- bash 引數替換中的模式匹配模式
- Excel 多個變數替換 實際值Excel變數
- 用javascript替換URL中的引數值JavaScript
- 如何在word中進行查詢與替換 word文件中的替換與查詢功能
- Stata-將變數名稱替換成標籤變數
- C#用正規表示式高效替換變數C#變數
- 定積分之換元積分法公式(或稱變數替換法)公式變數
- js中字串的替換JS字串
- 如何優雅的替換掉程式碼中的ifelse
- vue-router如何實時地址不變,動態替換路由引數(位址列引數)Vue路由
- Java替換PDF中的字型Java
- Java 替換PDF中的字型Java
- python如何將字串中的所有"you"替換成"we"Python字串
- Lumen 替換 world 裡面變數並匯出 PDF 圖片變數
- Lumen 替換 Word 裡面變數並匯出 PDF 圖片變數
- 【構建】start.sh指令碼中變數被maven profile構建過程替換指令碼變數Maven
- 替換專案中的包名
- puppet替換檔案中的string
- Swift 中單例模式的替換Swift單例模式
- js中字串全部替換JS字串
- 我是如何替換Spring Cloud Netflix的?SpringCloud
- LayerZero 如何替換IBC的傳輸層
- 如何不使用臨時變數,交換兩個變數的值。變數
- linux中批量替換文字中字串Linux字串
- js面試題-找出字串中的數字,並替換為*JS面試題字串
- SQL中的替換函式replace()使用SQL函式
- linux-如何快速替換IPLinux
- HTML 替換元素與非替換元素HTML
- Java替換RequstBody和RequestParam引數的屬性Java
- 如何將Windows的桌面替換成自己的程式Windows
- Java Word中的文字、圖片替換功能Java
- 替換字串中的空格《演算法很美》字串演算法
- 如何在MySQL中實現替換欄位部分內容MySql
- 如何快速替換SOLIDWORKS工程圖模板Solid
- .NET正則替換URL引數值
- word 中批次替換字型顏色