Hey guys in this post, we will discuss spring @GetMapping
, @PostMapping
, @PutMapping
, @PatchMapping
and @DeleteMapping
annotation with examples
Table of Contents
Overview
These annotations have been introduced in the spring 4.3version. These annotations will map the HTTP web requests to the specific handler methods.
@GetMapping annotation
Annotation for mapping HTTP GET
requests onto specific handler methods. Specifically, @GetMapping
is a composed annotation that acts as a shortcut for @RequestMapping(method = RequestMethod.GET)
.
It takes the following optional elements
consumes
– Narrows the primary mapping by media types that can be consumed by the mapped handler.headers
– The headers of the mapped request, narrowing the primary mapping.name
– Assign a name to this mapping.params
– The parameters of the mapped request, narrowing the primary mapping.path
– The primary mapping expressed by this annotation.produces
– Narrows the primary mapping by media types that can be produced by the mapped handler.value
– The primary mapping expressed by this annotation.
@GetMapping("/customers")
public ResponseEntity<List<Customer>> getAllCustomers() {
try {
List<Customer> list = customerRepo.findAll();
if (list.isEmpty() || list.size() == 0) {
return new ResponseEntity<List<Customer>>(HttpStatus.NO_CONTENT);
}
return new ResponseEntity<List<Customer>>(list, HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@PostMapping annotation
Annotation for mapping HTTP POST
requests onto specific handler methods. Specifically, @PostMapping
is a composed annotation that acts as a shortcut for @RequestMapping(method = RequestMethod.POST)
.
It takes the following optional elements
consumes
– Narrows the primary mapping by media types that can be consumed by the mapped handler.headers
– The headers of the mapped request, narrowing the primary mapping.name
– Assign a name to this mapping.params
– The parameters of the mapped request, narrowing the primary mapping.path
– The primary mapping expressed by this annotation.produces
– Narrows the primary mapping by media types that can be produced by the mapped handler.value
– The primary mapping expressed by this annotation.
@PostMapping("/customers")
public ResponseEntity<Customer> save(@RequestBody Customer customer) {
try {
return new ResponseEntity<>(customerRepo.save(customer), HttpStatus.CREATED);
} catch (Exception e) {
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@PutMapping annotation
Annotation for mapping HTTP PUT
requests onto specific handler methods. Specifically, @PutMapping
is a composed annotation that acts as a shortcut for @RequestMapping(method = RequestMethod.PUT)
.
It takes the following optional elements
consumes
– Narrows the primary mapping by media types that can be consumed by the mapped handler.headers
– The headers of the mapped request, narrowing the primary mapping.name
– Assign a name to this mapping.params
– The parameters of the mapped request, narrowing the primary mapping.path
– The primary mapping expressed by this annotation.produces
– Narrows the primary mapping by media types that can be produced by the mapped handler.value
– The primary mapping expressed by this annotation.
@PutMapping("/customers/{id}")
public ResponseEntity<Customer> updateCustomer(@RequestBody Customer customer) {
try {
return new ResponseEntity<Customer>(customerRepo.save(customer), HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@DeleteMapping annotation
Annotation for mapping HTTP DELETE
requests onto specific handler methods. Specifically, @DeleteMapping
is a composed annotation that acts as a shortcut for @RequestMapping(method = RequestMethod.Delete)
.
It takes the following optional elements
consumes
– Narrows the primary mapping by media types that can be consumed by the mapped handler.headers
– The headers of the mapped request, narrowing the primary mapping.name
– Assign a name to this mapping.params
– The parameters of the mapped request, narrowing the primary mapping.path
– The primary mapping expressed by this annotation.produces
– Narrows the primary mapping by media types that can be produced by the mapped handler.value
– The primary mapping expressed by this annotation.
@DeleteMapping("/customers/{id}")
public ResponseEntity<HttpStatus> deleteCustomer(@PathVariable Long id) {
try {
Optional<Customer> customer = customerRepo.findById(id);
if (customer.isPresent()) {
customerRepo.delete(customer.get());
}
return new ResponseEntity<HttpStatus>(HttpStatus.NO_CONTENT);
} catch (Exception e) {
return new ResponseEntity<HttpStatus>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@PatchMapping annotation
Annotation for mapping HTTP PATCH
requests onto specific handler methods. Specifically, @PatchMapping
is a composed annotation that acts as a shortcut for @RequestMapping(method = RequestMethod.PATCH)
.
It takes the following optional elements
consumes
– Narrows the primary mapping by media types that can be consumed by the mapped handler.headers
– The headers of the mapped request, narrowing the primary mapping.name
– Assign a name to this mapping.params
– The parameters of the mapped request, narrowing the primary mapping.path
– The primary mapping expressed by this annotation.produces
– Narrows the primary mapping by media types that can be produced by the mapped handler.value
– The primary mapping expressed by this annotation.
@PatchMapping("/customers/{id}/{name}")
public ResponseEntity<Customer> updateCustomerName(@PathVariable Long id, @PathVariable String name) {
try {
Customer customer = customerRepo.findById(id).get();
customer.setName(name);
return new ResponseEntity<Customer>(customerRepo.save(customer), HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}