2023年6月27日发(作者:)
SpringBoot2中使⽤@RequestHeader获取请求头的⽅法⽬录⼀、使⽤@RequestHeader获取请求头(⼀)获取某⼀个请求头(⼆)获取数值型请求头(三)⼀次性获取所有请求头⼆、@RequestHeader注解详解(⼀)name、value属性(⼆)required属性(三)defaultValue属性springMVC/SpringBoot中提供了@RequestHeader注解⽤来获取请求头。⼀、使⽤@RequestHeader获取请求头(⼀)获取某⼀个请求头例如,获取accept-language请求头:@GetMapping("/getLanguage")public Result test(@RequestHeader("accept-language") String language) { // ......
return new Result(true, 600, language);}使⽤postman,没有设置accept-language请求头时,响应:{ "timestamp": "2019-12-3T20:43:58.971+0000", "status": 400, "error": "Bad Request", "message": "Missing request header 'accept-language' for method parameter of type String", "path": "/getLanguage"}添加了accept-language请求头后,响应:{ "flag": true, "code": 600, "message": "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7"}
(⼆)获取数值型请求头@GetMapping("/num")public Result getNumber(@RequestHeader("my-number") int myNumber) { return new Result(true, (), f(myNumber));}使⽤postman设置my-number请求头值为1,响应:{ "flag": true, "code": 200, "message": "1"}(三)⼀次性获取所有请求头1、使⽤Map接收所有请求头@GetMapping("/getHeaders")public Result listAllHeaders(@RequestHeader Map Supported for annotated handler methods in Spring MVC and Spring WebFlux. * * If the method parameter is {@link Map<String, String>}, * {@link alueMap MultiValueMap<String, String>}, * or {@link aders HttpHeaders} then the map is * populated with all header names and values. * * @author Juergen Hoeller * @author Sam Brannen * @since 3.0 * @see RequestMapping * @see RequestParam * @see CookieValue */@Target(TER)@Retention(E)@Documentedpublic @interface RequestHeader { /** * Alias for {@link #name}. */ @AliasFor("name") String value() default ""; /** * The name of the request header to bind to. * @since 4.2 */ @AliasFor("value") String name() default ""; /** * Whether the header is required. * Defaults to {@code true}, leading to an exception being thrown * if the header is missing in the request. Switch this to * {@code false} if you prefer a {@code null} value if the header is * not present in the request. * Alternatively, provide a {@link #defaultValue}, which implicitly * sets this flag to {@code false}. */ boolean required() default true; /** * The default value to use as a fallback. * Supplying a default value implicitly sets {@link #required} to * {@code false}. */ String defaultValue() default T_NONE;}(⼀)name、value属性public Result test(@RequestHeader(name="accept-language") String language)public Result test(@RequestHeader(value="accept-language") String language)上⾯这两⾏代码效果相同。当然都可以省略为:(因为value是可以省略写的)public Result test(@RequestHeader("accept-language") String language)因为从源码中,可以看出name/value互为别名: @AliasFor("name") String value() default ""; @AliasFor("value") String name() default "";@AliasFor注解:@AliasFor在同⼀个注解中成对使⽤,表⽰两个属性互为别名。⽐如上⾯的,value和name就是互为别名。@AliasFor标签有⼀些使⽤限制,⽐如要求互为别名的属性的属性值类型、默认值都是相同的。互为别名的注解必须成对出现,⽐如value属性添加了@AliasFor(“name”),那么name属性就必须添加@AliasFor(“value”)。(⼆)required属性@GetMapping("/getHeader3")public Result evaluateNonRequiredHeader( @RequestHeader(value = "chushiyan", required = false) String header) { return new Result(true,(),"");}如果没有添加required = false,当请求头中没有这个chushiyan请求头时就会报错。(三)defaultValue属性可以使⽤defaultValue属性指定默认值@GetMapping("/getHeader3")public Result evaluateNonRequiredHeader( @RequestHeader(value = "chushiyan", defaultValue = "hello") String header) { return new Result(true,(),"");}到此这篇关于SpringBoot2中使⽤@RequestHeader获取请求头的⽅法的⽂章就介绍到这了,更多相关SpringBoot2@RequestHeader获取请求头内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1687866510a52121.html
评论列表(0条)