基本用法
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在此祝各位生活愉快!工作順利!