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在此祝各位生活愉快!工作顺利!
读后有收获,小礼物走一走,请作者喝咖啡。
Buy me a coffee. ☕Get red packets.
作者:楼兰胡杨
本文版权归作者和博客园共有,欢迎转载,但请注明原文链接,并保留此段声明,否则保留追究法律责任的权利。