What is the purpose of the @PutMapping annotation in Spring Boot?
The @PutMapping annotation maps HTTP PUT requests to a specific method in a controller. It is used to update existing resources on the server.
Click to reveal answer
beginner
What does the @DeleteMapping annotation do in a Spring Boot controller?
The @DeleteMapping annotation maps HTTP DELETE requests to a method. It is used to delete resources from the server.
Click to reveal answer
intermediate
How do @PutMapping and @DeleteMapping differ from @GetMapping and @PostMapping?
@PutMapping and @DeleteMapping handle updating and deleting resources, respectively, while @GetMapping retrieves data and @PostMapping creates new resources.
Click to reveal answer
intermediate
Show a simple example of a method using @PutMapping to update a user by ID.
Example:
@PutMapping("/users/{id}")
public ResponseEntity<User> updateUser(@PathVariable Long id, @RequestBody User user) {
// update logic here
User updatedUser = userService.updateUser(id, user);
return ResponseEntity.ok(updatedUser);
}
Click to reveal answer
intermediate
Why is it important to use @DeleteMapping for delete operations instead of @GetMapping?
Using @DeleteMapping clearly signals the intent to delete a resource and follows HTTP standards. @GetMapping is meant for safe, read-only operations and should not change server state.
Click to reveal answer
Which HTTP method does @PutMapping handle?
AGET
BPOST
CDELETE
DPUT
✗ Incorrect
@PutMapping maps HTTP PUT requests, which are used to update resources.
What is the main use of @DeleteMapping in Spring Boot?
ATo create new resources
BTo delete resources
CTo retrieve resources
DTo update existing resources
✗ Incorrect
@DeleteMapping is used to handle HTTP DELETE requests to remove resources.
Which annotation would you use to update a resource at the URL '/items/{id}'?
A@PutMapping("/items/{id}")
B@PostMapping("/items/{id}")
C@GetMapping("/items/{id}")
D@DeleteMapping("/items/{id}")
✗ Incorrect
@PutMapping is the correct annotation for updating resources at a specific URL.
Which HTTP method should NOT be used to delete a resource?
ADELETE
BPUT
CGET
DPOST
✗ Incorrect
GET requests are meant for reading data and should not change server state like deleting resources.
In a Spring Boot controller, which annotation is best for a method that removes a user by ID?
A@DeleteMapping
B@PutMapping
C@PostMapping
D@GetMapping
✗ Incorrect
@DeleteMapping is designed for delete operations, making it the best choice.
Explain how @PutMapping and @DeleteMapping are used in a Spring Boot REST controller.
Think about how HTTP methods relate to resource actions.
You got /4 concepts.
Describe why it is important to use the correct HTTP method annotations like @PutMapping and @DeleteMapping in REST APIs.
Consider how clients and servers understand requests.
You got /4 concepts.
Practice
(1/5)
1. What is the primary purpose of the @PutMapping annotation in Spring Boot?
easy
A. To handle HTTP GET requests for retrieving data
B. To handle HTTP PUT requests for updating existing resources
C. To handle HTTP POST requests for creating new resources
D. To handle HTTP DELETE requests for removing resources
Solution
Step 1: Understand HTTP methods
HTTP PUT is used to update existing data on the server.
Step 2: Match annotation to HTTP method
@PutMapping maps HTTP PUT requests to controller methods.
Final Answer:
To handle HTTP PUT requests for updating existing resources -> Option B
Quick Check:
@PutMapping = update data [OK]
Hint: Put means update existing data via HTTP PUT [OK]
Common Mistakes:
Confusing @PutMapping with @PostMapping
Thinking @PutMapping creates new data
Mixing HTTP methods like GET or DELETE
2. Which of the following is the correct syntax to define a method that deletes a resource by ID using @DeleteMapping?
easy
A. @DeleteMapping("/items/{id}") public void deleteItem(int id) {}
B. @DeleteMapping("/items") public void deleteItem(int id) {}
C. @DeleteMapping("/items/{id}") public void deleteItem(@PathVariable int id) {}
D. @DeleteMapping("/items") public void deleteItem(@RequestParam int id) {}
Solution
Step 1: Identify correct URL pattern and annotation
To delete by ID, URL should include path variable like /items/{id} and method parameter annotated with @PathVariable.
@DeleteMapping("/items/{id}") public void deleteItem(@PathVariable int id) {} correctly uses @DeleteMapping with path and @PathVariable int id parameter.
Final Answer:
@DeleteMapping("/items/{id}") public void deleteItem(@PathVariable int id) {} -> Option C
Quick Check:
Delete by ID needs @PathVariable and matching URL [OK]
Hint: Use @PathVariable with URL {id} in @DeleteMapping [OK]
Common Mistakes:
Omitting @PathVariable annotation
Using @RequestParam instead of @PathVariable for path params
Not matching method parameter to URL placeholder
3. Given the following Spring Boot controller method, what will happen when a PUT request is sent to /users/5 with a valid JSON body?
@PutMapping("/users/{id}")
public User updateUser(@PathVariable int id, @RequestBody User user) {
user.setId(id);
return userService.save(user);
}
medium
A. The user with ID 5 will be updated with the JSON data and returned
B. A new user will be created ignoring the ID in the URL
C. The request will fail because @RequestBody is missing
D. The user ID will not be set and cause an error
Solution
Step 1: Analyze method parameters and annotations
The method uses @PutMapping with path variable id and @RequestBody user object. It sets user ID from path.
Step 2: Understand method behavior on PUT request
It updates the user ID to match URL, then calls save to update and returns updated user.
Final Answer:
The user with ID 5 will be updated with the JSON data and returned -> Option A
Quick Check:
PUT updates resource with URL ID and JSON body [OK]
Hint: PUT with @RequestBody updates resource using URL ID [OK]
Common Mistakes:
Assuming PUT creates new resource instead of updating
Ignoring @PathVariable ID and using JSON ID only
Missing @RequestBody causing request failure
4. Identify the error in this Spring Boot controller method intended to delete a user by ID:
@DeleteMapping("/users")
public void deleteUser(@PathVariable int id) {
userService.deleteById(id);
}
medium
A. The URL does not include the path variable placeholder {id}
B. The method should use @RequestParam instead of @PathVariable
C. The method should return a value instead of void
D. The @DeleteMapping annotation is missing
Solution
Step 1: Check URL and method parameters
The method expects @PathVariable int id but URL is "/users" without {id} placeholder.
Step 2: Understand path variable binding
Without {id} in URL, Spring cannot bind path variable, causing error.
Final Answer:
The URL does not include the path variable placeholder {id} -> Option A
Quick Check:
Path variable needs matching {id} in URL [OK]
Hint: Match @PathVariable with {id} in URL path [OK]
Common Mistakes:
Forgetting to add {id} in URL path
Using @PathVariable without URL placeholder
Confusing @RequestParam with @PathVariable
5. You want to implement a REST API in Spring Boot that updates a product's price only if the product exists, otherwise returns 404. Which combination of annotations and code best achieves this using @PutMapping?
hard
A. @PutMapping("/products/{id}") public Product updatePrice(@RequestParam int id, @RequestBody Product p) {
p.setId(id);
return productService.save(p);
}
B. @PutMapping("/products") public Product updatePrice(@RequestBody Product p) {
productService.save(p);
return p;
}
C. @PutMapping("/products/{id}") public void updatePrice(@PathVariable int id, @RequestBody Product p) {
productService.save(p);
}
D. @PutMapping("/products/{id}") public ResponseEntity<Product> updatePrice(@PathVariable int id, @RequestBody Product p) {
return productService.findById(id)
.map(existing -> {
existing.setPrice(p.getPrice());
productService.save(existing);
return ResponseEntity.ok(existing);
})
.orElse(ResponseEntity.notFound().build());
}
Solution
Step 1: Check for product existence before update
@PutMapping("/products/{id}") public ResponseEntity<Product> updatePrice(@PathVariable int id, @RequestBody Product p) {
return productService.findById(id)
.map(existing -> {
existing.setPrice(p.getPrice());
productService.save(existing);
return ResponseEntity.ok(existing);
})
.orElse(ResponseEntity.notFound().build());
} uses productService.findById(id) to check if product exists, returning 404 if not.
Step 2: Update price only if product found and return proper HTTP response
The map lambda updates the price on the existing product, saves it, and returns ResponseEntity.ok(existing); orElse returns notFound().
Final Answer:
@PutMapping("/products/{id}") public ResponseEntity<Product> updatePrice(@PathVariable int id, @RequestBody Product p) {
return productService.findById(id)
.map(existing -> {
existing.setPrice(p.getPrice());
productService.save(existing);
return ResponseEntity.ok(existing);
})
.orElse(ResponseEntity.notFound().build());
} -> Option D
Quick Check:
Check existence, update, return 404 if missing [OK]
Hint: Check existence first, then update and return ResponseEntity [OK]
Common Mistakes:
Not checking if product exists before update
Using @RequestParam instead of @PathVariable for ID
Not returning 404 when product missing
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.