如何替換@PathVariable中的變量
替換@PathVariable的變量
因為要對接口進(jìn)行統(tǒng)計, 而項目中用到了@PathVariable的注解, 也就是uri中攜帶請求參數(shù)的方式. 導(dǎo)致一個接口統(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; }
@pathvariable注解的使用
帶占位符的 URL 是 Spring3.0 新增的功能,該功能在SpringMVC 向 REST 目標(biāo)挺進(jìn)發(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); }
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot整合PageHelper實現(xiàn)分頁查詢功能詳解
PageHelper是mybatis框架的一個插件,用于支持在mybatis執(zhí)行分頁操作。本文將通過SpringBoot整合PageHelper實現(xiàn)分頁查詢功能,需要的可以參考一下2022-03-03Spring?Boot?整合?Fisco?Bcos的案例分析(區(qū)塊鏈)
本篇文章介紹的?Spring?Boot?整合?Fisco?Bcos的案例,是在阿里云服務(wù)器上部署驗證的。大家可根據(jù)自己的電腦環(huán)境,對比該案例進(jìn)行開發(fā)即可,具體案例代碼跟隨小編一起看看吧2022-01-01java連接mysql數(shù)據(jù)庫學(xué)習(xí)示例
這篇文章主要介紹了java連接mysql數(shù)據(jù)庫學(xué)習(xí)示例,需要的朋友可以參考下2014-03-03SpringBoot圖文并茂詳解如何引入mybatis與連接Mysql數(shù)據(jù)庫
這篇文章主要介紹了SpringBoot如何引入mybatis與連接Mysql數(shù)據(jù)庫,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07spring boot+ redis 接口訪問頻率限制的實現(xiàn)
這篇文章主要介紹了spring boot+ redis 接口訪問頻率限制的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01