欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring請求路徑帶參數(shù)URL使用注解的寫法說明

 更新時間:2021年08月16日 15:00:11   作者:靈穎橋人  
這篇文章主要介紹了Spring請求路徑帶參數(shù)URL使用注解的寫法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Spring請求路徑帶參數(shù)URL使用注解的寫法

調(diào)用外部平臺http接口,Post請求,url 為路徑帶有參數(shù)的形式:

http://xxxxxx.com/openApi/auth/getUserAuth?version=v1.0

使用 Retrofit 框架(本文使用的2.6.2版本)發(fā)送Post請求,可以在 @Post 注解中直接帶上參數(shù),如下:

    @POST("auth/getUserAuth?version=v1.0")
    Call<McgjResponse<UserAuthResponseDTO>> getUserAuth(@Body UserAuthRequest userAuthRequest);

因?yàn)槌醮问褂?Retrofit 框架,所以自己啟動Spring服務(wù)模擬外部平臺接口,發(fā)現(xiàn)之前一直都在@PostMapping中定義路徑,還沒怎么寫過帶參數(shù)的,導(dǎo)致寫錯了,報 404錯誤,記錄一下下。先說正確寫法:

正確寫法:

@PostMapping(value ="/authorize/addRecord",params = "version=v1.0")
    public McgjResponse<UserAuthResponseDTO> test(){

其實(shí)@RequestMapping、@GetMapping、@PostMapping 三個注解都可以指定請求Header、請求path、以及請求params。

@RequestMapping("/foo") 等價于 @RequestMapping(path="/foo")

 /**
  * The primary mapping expressed by this annotation.
  * <p>In a Servlet environment this is an alias for {@link #path}.
  * For example {@code @RequestMapping("/foo")} is equivalent to
  * {@code @RequestMapping(path="/foo")}.
  * <p>In a Portlet environment this is the mapped portlet modes
  * (i.e. "EDIT", "VIEW", "HELP" or any custom modes).
  * <p><b>Supported at the type level as well as at the method level!</b>
  * When used at the type level, all method-level mappings inherit
  * this primary mapping, narrowing it for a specific handler method.
  */
 @AliasFor("path")
 String[] value() default {};

所以平常在括號中直接寫,只是指定了 path。如果錯誤地把參數(shù)寫到請求 path 中,則會報 HTTP 404 錯誤,如下錯誤寫法:

錯誤寫法:

//錯誤寫法
@PostMapping(value ="/auth/getUserAuth?version=v1.0")
    public McgjResponse<UserAuthResponseDTO> test(){

小結(jié):

這三個注解平時用的是如此之多,卻如此不熟悉,實(shí)在不應(yīng)該!

Spring注解@RequestMapping請求路徑映射問題

@RequestMapping請求路徑映射,如果標(biāo)注在某個controller的類級別上,則表明訪問此類路徑下的方法都要加上其配置的路徑;最常用是標(biāo)注在方法上,表明哪個具體的方法來接受處理某次請求。

以下兩種方式都可以從url中傳參數(shù),但是第二種方式的適用性更高一些,當(dāng)參數(shù)中包含中文的時候,如果用第一種方式傳參數(shù),經(jīng)常會出現(xiàn)參數(shù)還沒到controller就已經(jīng)經(jīng)過編碼了(例如:經(jīng)過utf-8編碼后,原本要傳的參數(shù)就會以%+ab...cd這樣的方式出現(xiàn)),然后controller接受到這樣的請求后,根本無法解析該請求應(yīng)該走那個業(yè)務(wù)方法。

然后就會出現(xiàn)常見的404問題。。。

package com.test.jeofey.web; 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping; 
 
@Controller
@RequestMapping("/path")
public class TestController {
 
 // 第一種傳參數(shù)的方式 訪問地址例如:http:域名/path/method1/keyWord.html
 @RequestMapping("method1/{keyWord}")
 public String getZhiShiDetailData(@PathVariable("keyWord") String keyWord,
   HttpServletRequest request, HttpServletResponse response){
  System.out.println(keyWord);
  return "v1/detail";
 }
 
 // 第二種傳參數(shù)的方式 訪問地址例如:http:域名/path/method2.html?key=keyWord
 @RequestMapping("method2")
 public String getCommonData(HttpServletRequest request, 
   HttpServletResponse response){
  String keyWord= request.getParameter("key");
  System.out.println(keyWord);
  return "v1/common";
 }  
}

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 解決java執(zhí)行cmd命令調(diào)用ffmpeg報錯Concat error - No such filter ''[0,0]''問題

    解決java執(zhí)行cmd命令調(diào)用ffmpeg報錯Concat error - No such filter ''[0,0]

    這篇文章主要介紹了java執(zhí)行cmd命令,調(diào)用ffmpeg報錯Concat error - No such filter '[0,0]'解決方法,本文通過截圖實(shí)例代碼說明給大家介紹的非常詳細(xì),對大家的工作或?qū)W習(xí)有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • Mybatis如何傳入多個參數(shù)的實(shí)現(xiàn)代碼

    Mybatis如何傳入多個參數(shù)的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Mybatis如何傳入多個參數(shù)的實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • nacos配置中心遠(yuǎn)程調(diào)用讀取不到配置文件的解決

    nacos配置中心遠(yuǎn)程調(diào)用讀取不到配置文件的解決

    這篇文章主要介紹了nacos配置中心遠(yuǎn)程調(diào)用讀取不到配置文件的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教。
    2022-01-01
  • JVM內(nèi)置函數(shù)Intrinsics介紹

    JVM內(nèi)置函數(shù)Intrinsics介紹

    這篇文章主要介紹了JVM內(nèi)置函數(shù)Intrinsics,我們將學(xué)習(xí)什么是intrinsics(內(nèi)部/內(nèi)置函數(shù)),以及它們?nèi)绾卧贘ava和其他基于JVM的語言中工作,需要的朋友可以參考一下
    2022-02-02
  • 關(guān)于HttpServletRequest獲取POST請求Body參數(shù)的3種方式

    關(guān)于HttpServletRequest獲取POST請求Body參數(shù)的3種方式

    這篇文章主要介紹了關(guān)于HttpServletRequest獲取POST請求Body參數(shù)的3種方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Mybatis的介紹、基本使用、高級使用

    Mybatis的介紹、基本使用、高級使用

    這篇文章主要介紹了Mybatis的介紹、基本使用、高級使用,Mybatis是一款半自動的ORM持久層框架,具有較高的SQL靈活性,如何使用看這篇就夠了,需要的朋友可以參考下
    2023-03-03
  • JDK動態(tài)代理與CGLib動態(tài)代理的區(qū)別對比

    JDK動態(tài)代理與CGLib動態(tài)代理的區(qū)別對比

    今天小編就為大家分享一篇關(guān)于JDK動態(tài)代理與CGLib動態(tài)代理的區(qū)別對比,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • SpringCloud?hystrix斷路器與局部降級全面介紹

    SpringCloud?hystrix斷路器與局部降級全面介紹

    什么是服務(wù)降級?當(dāng)服務(wù)器壓力劇增的情況下,根據(jù)實(shí)際業(yè)務(wù)情況及流量,對一些服務(wù)和頁面有策略的不處理或換種簡單的方式處理,從而釋放服務(wù)器資源以保證核心交易正常運(yùn)作或高效運(yùn)作
    2022-10-10
  • Mybatis開啟控制臺打印sql語句方式

    Mybatis開啟控制臺打印sql語句方式

    這篇文章主要介紹了Mybatis開啟控制臺打印sql語句方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • SpringBoot和Vue實(shí)現(xiàn)動態(tài)二維碼的示例代碼

    SpringBoot和Vue實(shí)現(xiàn)動態(tài)二維碼的示例代碼

    二維碼在現(xiàn)代社交和營銷活動中被廣泛使用,本文主要介紹了SpringBoot和Vue實(shí)現(xiàn)動態(tài)二維碼的示例代碼,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02

最新評論