spring-webmvc @RequestHeader 典型用法

典型用法

基础用法:获取指定请求头值

@GetMapping("/info")
public String getInfo(@RequestHeader("User-Agent") String userAgent) {
    return "User-Agent: " + userAgent;
}

如果请求中包含 User-Agent 请求头,则其值将被注入到 userAgent 参数。
若未找到该 Header,默认会抛出异常(除非设置 required=false)。

设置默认值(defaultValue)

当请求头不存在时,可以提供一个默认值:

@GetMapping("/content-type")
public String getContentType(
        @RequestHeader(name = "Content-Type", defaultValue = "application/json") String contentType) {
    return "Content-Type: " + contentType;
}

若没有 Content-Type 请求头,则使用 "application/json" 作为默认值。

可选请求头(required=false)

允许请求头缺失而不抛出异常:

@GetMapping("/optional-header")
public String optionalHeader(
        @RequestHeader(name = "X-Custom-Header", required = false) String customHeader) {
    if (customHeader == null) {
        return "Custom header not provided.";
    }
    return "Custom Header Value: " + customHeader;
}

获取所有请求头(Map 形式)

你可以通过 Map 获取所有请求头,可用于日志记录、调试或通用处理逻辑。

@GetMapping("/all-headers")
public String allHeaders(@RequestHeader Map<String, String> headers) {
    StringBuilder sb = new StringBuilder();
    for (Map.Entry<String, String> entry : headers.entrySet()) {
        sb.append(entry.getKey()).append(": ").append(entry.getValue()).append("\n");
    }
    return sb.toString();
}

获取请求头对象集合(MultiValueMap)

如果你需要获取多个相同名称的请求头值(如多 Accept 类型),可以使用 MultiValueMap:

@GetMapping("/multi-accept")
public String handleAcceptHeader(@RequestHeader MultiValueMap<String, String> headers) {
    List<String> acceptValues = headers.get("Accept");
    return "Client Accepts: " + acceptValues;
}

// 如果客户端发送如下请求头
Accept: text/plain
Accept: application/json
Accept: */*

// 输出结果将是
Client Accepts: [text/plain, application/json, */*]

你可能感兴趣的:(注解,spring,python,java)