溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么替換@PathVariable中的變量

發(fā)布時間:2021-11-01 15:08:03 來源:億速云 閱讀:187 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要講解了“怎么替換@PathVariable中的變量”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么替換@PathVariable中的變量”吧!

替換@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;
  }

@pathvariable注解的使用

帶占位符的 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中的變量

感謝各位的閱讀,以上就是“怎么替換@PathVariable中的變量”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對怎么替換@PathVariable中的變量這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細節(jié)

免責聲明:本站發(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)容。

AI