Spring 注解之@RequestHeader注解:獲取請求頭參數


基本用法

  Spring MVC提供了 @RequestHeader注解,其作用是將請求頭中的參數值映射到控制器的參數中。常用屬性如下:

  • name:header值被綁定到的參數名稱(The name of the request header to bind to)。只有此屬性時,可以省略name,簡寫為@RequestHeader("host")
  • required:Boolean類型,默認值為true,即請求頭中必須包含此參數。
  • defaultValue:為請求頭中的參數提供默認值,如果拿不到值,就將此值賦給控制器的參數。

測試用例

  創建一個controller,讀取請求頭中的兩個參數:

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("hello")
public class HelloController {

    @PostMapping("/getHeader.do")
    public String getHeader(@RequestHeader("host") String host,
                            @RequestHeader(name = "my-header", required = false, 
                            defaultValue = "3") String myHeader){
        System.out.println("host---"+host);
        System.out.println("accept---"+myHeader);
        return "success:" + myHeader;
    }

}

  上面的函數getHeader,把request header中的參數 host的值綁定到參數host上了, my-header 的值綁定到參數myHeader上。在IDEA中創建一個基於.http文件的測試用例:

### 獲取請求頭中的參數,header隨機故意寫錯
POST http://localhost:8087/wiener/hello/getHeader.do
Content-Type: application/json
my-header1: givenHeader

{}

###

### 獲取請求頭中的參數,header書寫正確
POST http://localhost:8087/wiener/hello/getHeader.do
Content-Type: application/json
my-header: givenHeader

{}

###

  依次執行如上兩個請求,得到的執行結果如下:

host---localhost:8087
accept---3
host---localhost:8087
accept---givenHeader

  從執行結果得知,header中的參數可以寫錯,而且寫錯時,打印的結果是默認值3。

小結

  以上就是這篇文章的全部內容了,希望本文對道友的學習或者工作能帶來一定的幫助,如有疑問請留言交流。Wiener在此祝各位生活愉快!工作順利!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM