典型用法
基礎用法:獲取指定請求頭值
@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<String, String> 獲取所有請求頭,可用于日志記錄、調試或通用處理邏輯。
@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, */*]