您好,登錄后才能下訂單哦!
這篇文章主要講解了“怎么替換@PathVariable中的變量”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么替換@PathVariable中的變量”吧!
因為要對接口進行統(tǒng)計, 而項目中用到了@PathVariable的注解, 也就是uri中攜帶請求參數(shù)的方式. 導致一個接口統(tǒng)計出來很多個請求, 比如 /api/get/1, /api/get/2 …
在網(wǎng)上找到可以通過
Map<String, String> pathVariables = (Map) request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE);
拿到這個PathVariable參數(shù). 于是初步代碼如下, 將/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(); Map<String, String> pathVariables = (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; }
帶占位符的 URL 是 Spring3.0 新增的功能,該功能在SpringMVC 向 REST 目標挺進發(fā)展過程中具有里程碑的意義。
通過 @PathVariable 可以將 URL 中占位符參數(shù)綁定到控制器處理方法的入?yún)⒅?URL 中的 {xxx} 占位符可以通過
@PathVariable("xxx") 綁定到操作方法的入?yún)⒅小?/p>
//@GetMapping是一個組合注解,是@RequestMapping(method = RequestMethod.GET)的縮寫 @GetMapping("/getUserById/{id}") public User getUser(@PathVariable("id") Long userId){ return userService.selectUserById(userId); }
不需要使用問號傳參,不需要寫key=valuel,直接寫value即可.
若方法參數(shù)名稱和需要綁定的uri template中變量名稱一致時,可以簡寫:
//@GetMapping是一個組合注解,是@RequestMapping(method = RequestMethod.GET)的縮寫。 @GetMapping("/getUserByName/{userName}") public User getUserByName(@PathVariable String userName){ return userService.selectUserByUserName(userName); }
感謝各位的閱讀,以上就是“怎么替換@PathVariable中的變量”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對怎么替換@PathVariable中的變量這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。