Master SpringBoot @RequestHeader: Simplify HTTP Header Binding
This article explains how SpringBoot's @RequestHeader annotation automatically binds HTTP request headers to controller method parameters, reducing boilerplate code, supporting default values and optional headers, and improving readability and development efficiency with clear code examples.
Why @RequestHeader can bind any header?
In traditional Spring MVC you retrieve header values from HttpServletRequest, which leads to repetitive and error‑prone code as the number of headers grows.
public String getUserInfo(HttpServletRequest request) {
String authorization = request.getHeader("Authorization");
String language = request.getHeader("Accept-Language");
// process header data
return "User info";
}Using @RequestHeader, Spring automatically maps header values to method parameters, eliminating manual parsing.
Automatic header binding with @RequestHeader
Example:
@GetMapping("/user")
public String getUserInfo(@RequestHeader("Authorization") String authorization,
@RequestHeader("Accept-Language") String language) {
// process header data
return "Authorization: " + authorization + ", Language: " + language;
}The annotation binds the Authorization and Accept-Language headers directly to the parameters.
Advanced usage: default values and optional headers
Set a default value when a header is missing:
@GetMapping("/user")
public String getUserInfo(@RequestHeader(value = "Authorization", defaultValue = "Bearer default_token") String authorization) {
return "Authorization: " + authorization;
}Mark a header as optional; the parameter will be null if the header is absent:
@GetMapping("/user")
public String getUserInfo(@RequestHeader(value = "Authorization", required = false) String authorization) {
return authorization != null ? "Authorization: " + authorization : "No Authorization header";
}Benefits of @RequestHeader
Simplifies header binding : automatically extracts data, reducing boilerplate.
Improves development efficiency : no repetitive code for each header.
Enhances readability : method signatures clearly show required headers.
Flexible configuration : supports default values and optional headers.
Real‑world example
In an API project the frontend sends authentication and language preferences via headers. The controller uses @RequestHeader to handle them concisely:
@GetMapping("/profile")
public String getUserProfile(@RequestHeader("Authorization") String authorization,
@RequestHeader("Accept-Language") String language) {
return "Authorization: " + authorization + ", Language: " + language;
}This approach makes the code shorter and easier to maintain.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Java Architect Essentials
Committed to sharing quality articles and tutorials to help Java programmers progress from junior to mid-level to senior architect. We curate high-quality learning resources, interview questions, videos, and projects from across the internet to help you systematically improve your Java architecture skills. Follow and reply '1024' to get Java programming resources. Learn together, grow together.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
