Spring Boot REST Controller - Complete Guide
1. What is a REST Controller?
A REST controller in Spring Boot is a Java class annotated with @RestController. It receives HTTP requests and returns
responses, usually in JSON format.
2. Core HTTP Methods
- GET: Read data (e.g., /users)
- POST: Create data (e.g., /users)
- PUT: Update data (e.g., /users/1)
- DELETE: Remove data (e.g., /users/1)
3. Key Annotations Explained
@PathVariable: Retrieves data from the URL path (e.g., /users/{id})
@RequestParam: Retrieves query parameters (e.g., /search?name=omar)
@RequestBody: Maps incoming JSON data to a Java object in POST/PUT
4. Example
@PostMapping("/users")
public User createUser(@RequestBody User user) {
return userRepository.save(user);
}
5. RESTful Route Design
- /users (GET, POST)
- /users/{id} (GET, PUT, DELETE)
- Avoid: /getUser, /createUser (not RESTful)
6. HTTP Status Codes
- 200 OK: Successful GET
- 201 Created: Resource created via POST
- 204 No Content: Successful DELETE
- 400 Bad Request: Invalid input
- 404 Not Found: Resource not found
- 500 Server Error: Unexpected error
7. Real-world Use Case: Task Manager API
Imagine an app where each user can manage their own tasks:
- GET /tasks: returns all tasks
- POST /tasks: creates a task
- GET /tasks/{id}: returns a task
- DELETE /tasks/{id}: deletes a task
Spring Boot REST Controller - Complete Guide
8. What to Say in a Meeting
I structured my REST API using Spring annotations like @RestController and @RequestMapping. I used standard
RESTful verbs (GET, POST, PUT, DELETE), and separated data input handling using @RequestParam,
@PathVariable, and @RequestBody. All endpoints return appropriate HTTP status codes.