SpringBoot @RequestHeader注解接收请求头

发布时间 2023-07-18 11:46:45作者: kelelipeng

 https://blog.csdn.net/feyehong/article/details/123676293

 

 前端

$(function() {
   fetch('项目路径' + '/requestHeaderTest/init4', {
       method: 'GET',
       // 请求头
       headers: {
           name: "fengYeHong",
           age: 18,
           // 一个请求头包含多个值
           addressList: ["address1", "address2"]
       }
   })
});

 

一. 获取指定的请求头

import org.springframework.web.bind.annotation.RequestHeader;

@Controller
@RequestMapping("/requestHeaderTest")
public class RequestHeaderTest {

    @GetMapping("/init1")
    public void init1(@RequestHeader(value = "name", required = false, defaultValue = "ready") String name,
                      @RequestHeader(value = "age") int age,
                      // 默认为true,如果在前端可能不指定的话,需要手动改为非必须请求头,否则报错
                      @RequestHeader(value = "sex", required = false) String sex,
                      // 一个请求头中有多个值,使用List来接收
                      @RequestHeader(value = "addressList") List<String> addressList) {

        System.out.println(name);
        System.out.println(age);
        System.out.println(sex);
        System.out.println(addressList);
    }
}

 

二. 使用Map<String, String>接收所有请求头

import org.springframework.web.bind.annotation.RequestHeader;

@Controller
@RequestMapping("/requestHeaderTest")
public class RequestHeaderTest {

    @GetMapping("/init2")
    public void init2(@RequestHeader Map<String, String> headerMap) {

        // 使用Map接收所有的请求头
        System.out.println(headerMap);

        // js中使用header名为addressList,使用map接收后需要使用addresslist
        System.out.println(headerMap.get("addresslist"));  // address1,address2
    }
}

 

三. 使用MultiValueMap接收所有请求头

import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.util.MultiValueMap;

@Controller
@RequestMapping("/requestHeaderTest")
public class RequestHeaderTest {

    @GetMapping("/init3")
    public void init3(@RequestHeader MultiValueMap multiValueMap) {

        // 使用MultiValueMap来接收所有的请求头
        System.out.println(multiValueMap);
    }
}

四. 使用HttpHeaders接收所有请求头

在这里插入图片描述
在这里插入图片描述

 

import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.http.HttpHeaders;

@Controller
@RequestMapping("/requestHeaderTest")
public class RequestHeaderTest {

    @GetMapping("/init4")
    public void init4(@RequestHeader HttpHeaders httpHeaders) {

        // 使用HttpHeaders接收所有的请求头
        Map<String,List<String>> result = new LinkedHashMap<>(httpHeaders);
        System.out.println(result);
    }
}