1) @RequestParam
Extracts small values from the URL (query string).
Eg:
@GetMapping("/search")
public String searchUser(@RequestParam String name) {
return "Searching for " + name;
}
*Call: *
GET /search?name=sonali
name=sonali → comes from URL
No JSON involved
When to use?
Use @RequestParam when:
• Filtering / searching
• Pagination (page=1&size=10)
• Sorting (sort=name)
• Simple values only
If you're sending multiple fields, @RequestParam becomes messy:
/users?name=sonali&email=a@gmail.com&age=21
That’s a bad API design beyond small cases.
2)@RequestBody
Converts JSON request body → Java object.
@PostMapping("/users")
public User createUser(@RequestBody User user) {
return user;
}
Call: POST /users
Body:
{
"name": "Sonali",
"email": "sonali@gmail.com"
}
JSON → mapped to User object
Happens automatically via Spring
When to use?
Use @RequestBody when:
Creating data (POST)
Updating data (PUT)
Sending structured data (objects)
Combine both (real-world usage)
@PostMapping("/users")
public String createUser(
@RequestParam String role,
@RequestBody User user) {
return user.getName() + " is " + role;
}
Call:POST /users?role=admin
Body:
{
"name": "Sonali",
"email": "a@gmail.com"
}
Top comments (0)