Java Spring Rest Delete Example

Spring RestTemplate - GET, POST, PUT and DELETE Example

The RestTemplate provides a higher level API over HTTP client libraries. It makes it easy to invoke REST endpoints in a single line.

RestTemplate methods

Let's list out useful RestTemplate APIs:

  • getForObject - Retrieves a representation via GET.

  • getForEntity - Retrieves a ResponseEntity (that is, status, headers, and body) by using GET.

  • headForHeaders - Retrieves all headers for a resource by using HEAD.

  • postForLocation - Creates a new resource by using POST and returns the Location header from the response.

  • postForObject - Creates a new resource by using POST and returns the representation from the response.

  • postForEntity - Creates a new resource by using POST and returns the representation from the response.

  • put - Creates or updates a resource by using PUT.

  • patchForObject - Updates a resource by using PATCH and returns the representation from the response. Note that the JDK HttpURLConnection does not support the PATCH, but Apache HttpComponents and others do.

  • delete - Deletes the resources at the specified URI by using DELETE.

  • optionsForAllow - Retrieves allowed HTTP methods for a resource by using ALLOW.

  • exchange - More generalized (and less opinionated) version of the preceding methods that provides extra flexibility when needed. It accepts a RequestEntity (including HTTP method, URL, headers, and body as input) and returns a ResponseEntity.

  • execute - The most generalized way to perform a request, with full control over request preparation and response extraction through callback interfaces.

Spring RestTemplate - GET, POST, PUT and DELETE Example

We are building an application that uses Spring's RestTemplate class to consume CRUD Rest web services. Basically, we will develop Rest client to consume CRUD RESTFul APIs for a SimpleEmployee Management SystemusingSpring Boot 2,JPA andMySQL. Following are five REST APIs (Controller handler methods) are created for Employee resource.

I have written a separate article to build CRUD RESTFul APIs for a Simple Employee Management System  atSpring Boot 2 JPA MySQL CRUD Example.

Step1: Download source code from GitHub repository and import in your IDE

Please referSpring Boot 2 JPA MySQL CRUD Example article to build a complete spring boot CRUD Rest APIs application. You can download the source code of this article from my GitHub repository -https://github.com/RameshMF/spring-boot2-jpa-crud-example. You can import this project in your IDE and make sure that it is up and running.

In this next step, we walk through the CRUD Rest APIs for Employee resource.

Step 2: Spring Rest Controller - EmployeeController.java

                    package                    net.guides.springboot2.springboot2jpacrudexample.controller;                    import                    java.util.HashMap;                    import                    java.util.List;                    import                    java.util.Map;                    import                    javax.validation.Valid;                    import                    org.springframework.beans.factory.annotation.Autowired;                    import                    org.springframework.http.ResponseEntity;                    import                    org.springframework.web.bind.annotation.DeleteMapping;                    import                    org.springframework.web.bind.annotation.GetMapping;                    import                    org.springframework.web.bind.annotation.PathVariable;                    import                    org.springframework.web.bind.annotation.PostMapping;                    import                    org.springframework.web.bind.annotation.PutMapping;                    import                    org.springframework.web.bind.annotation.RequestBody;                    import                    org.springframework.web.bind.annotation.RequestMapping;                    import                    org.springframework.web.bind.annotation.RestController;                    import                    net.guides.springboot2.springboot2jpacrudexample.exception.ResourceNotFoundException;                    import                    net.guides.springboot2.springboot2jpacrudexample.model.Employee;                    import                    net.guides.springboot2.springboot2jpacrudexample.repository.EmployeeRepository;                    @RestController                    @RequestMapping(                      "/api/v1"                    )                    public                    class                    EmployeeController                    {                    @Autowired                    private                    EmployeeRepository                    employeeRepository;                    @GetMapping(                      "/employees"                    )                    public                    List<Employee>                    getAllEmployees() {                    return                    employeeRepository.findAll();     }                    @GetMapping(                      "/employees/{id}"                    )                    public                    ResponseEntity<Employee>                    getEmployeeById(@PathVariable(value                    =                                          "id"                    )                    Long                    employeeId)                    throws                    ResourceNotFoundException                    {                    Employee                    employee                    =                    employeeRepository.findById(employeeId)           .orElseThrow(()                    -                    >                    new                    ResourceNotFoundException(                      "Employee not found for this id ::                      "                                        +                    employeeId));                    return                    ResponseEntity                    .ok().body(employee);     }                    @PostMapping(                      "/employees"                    )                    public                    Employee                    createEmployee(@Valid                    @RequestBody                    Employee                    employee) {                    return                    employeeRepository.save(employee);     }                    @PutMapping(                      "/employees/{id}"                    )                    public                    ResponseEntity<Employee>                    updateEmployee(@PathVariable(value                    =                                          "id"                    )                    Long                    employeeId,                    @Valid                    @RequestBody                    Employee                    employeeDetails)                    throws                    ResourceNotFoundException                    {                    Employee                    employee                    =                    employeeRepository.findById(employeeId)         .orElseThrow(()                    -                    >                    new                    ResourceNotFoundException(                      "Employee not found for this id ::                      "                                        +                    employeeId));          employee.setEmailId(employeeDetails.getEmailId());         employee.setLastName(employeeDetails.getLastName());         employee.setFirstName(employeeDetails.getFirstName());                    final                    Employee                    updatedEmployee                    =                    employeeRepository.save(employee);                    return                    ResponseEntity                    .ok(updatedEmployee);     }                    @DeleteMapping(                      "/employees/{id}"                    )                    public                    Map<String,                      Boolean>                    deleteEmployee(@PathVariable(value                    =                                          "id"                    )                    Long                    employeeId)                    throws                    ResourceNotFoundException                    {                    Employee                    employee                    =                    employeeRepository.findById(employeeId)        .orElseThrow(()                    -                    >                    new                    ResourceNotFoundException(                      "Employee not found for this id ::                      "                                        +                    employeeId));          employeeRepository.delete(employee);                    Map<String,                      Boolean>                    response                    =                    new                    HashMap<>();         response.put(                      "deleted"                    ,                    Boolean                                          .TRUE);                    return                    response;     } }

Let's develop Spring Rest client for above CRUD Rest APIs usingRestTemplate class.

Step 3: Spring REST Client GET, POST, PUT and DELETE using RestTemplate

                  package                  net.guides.springboot2.springboot2jpacrudexample;                  import                  java.util.Arrays;                  import                  java.util.HashMap;                  import                  java.util.Map;                  import                  org.springframework.http.HttpEntity;                  import                  org.springframework.http.HttpHeaders;                  import                  org.springframework.http.HttpMethod;                  import                  org.springframework.http.MediaType;                  import                  org.springframework.http.ResponseEntity;                  import                  org.springframework.web.client.RestTemplate;                  import                  net.guides.springboot2.springboot2jpacrudexample.model.Employee;                  public                  class                  SpringRestClient                  {                  private                  static                  final                  String                  GET_EMPLOYEES_ENDPOINT_URL                  =                                      "http://localhost:8080/api/v1/employees"                  ;                  private                  static                  final                  String                  GET_EMPLOYEE_ENDPOINT_URL                  =                                      "http://localhost:8080/api/v1/employees/{id}"                  ;                  private                  static                  final                  String                  CREATE_EMPLOYEE_ENDPOINT_URL                  =                                      "http://localhost:8080/api/v1/employees"                  ;                  private                  static                  final                  String                  UPDATE_EMPLOYEE_ENDPOINT_URL                  =                                      "http://localhost:8080/api/v1/employees/{id}"                  ;                  private                  static                  final                  String                  DELETE_EMPLOYEE_ENDPOINT_URL                  =                                      "http://localhost:8080/api/v1/employees/{id}"                  ;                  private                  static                  RestTemplate                  restTemplate                  =                  new                  RestTemplate();                  public                  static                  void                  main(String[]                  args) {                  SpringRestClient                  springRestClient                  =                  new                  SpringRestClient();                                      //                    Step1: first create a new employee                  springRestClient.createEmployee();                                      //                    Step 2: get new created employee from step1                  springRestClient.getEmployeeById();                                      //                    Step3: get all employees                  springRestClient.getEmployees();                                      //                    Step4: Update employee with id = 1                  springRestClient.updateEmployee();                                      //                    Step5: Delete employee with id = 1                  springRestClient.deleteEmployee();     }                  private                  void                  getEmployees() {                  HttpHeaders                  headers                  =                  new                  HttpHeaders();         headers.setAccept(Arrays                  .asList(MediaType                                      .APPLICATION_JSON));                  HttpEntity                  <                  String                  >                  entity                  =                  new                  HttpEntity                  <                  String                  > (                    "parameters"                  , headers);                  ResponseEntity                  <                  String                  >                  result                  =                  restTemplate.exchange(GET_EMPLOYEES_ENDPOINT_URL,                  HttpMethod                                      .GET, entity,                  String                  .class);                  System                  .out.println(result);     }                  private                  void                  getEmployeeById() {                  Map                  <                  String,                  String                  >                  params                  =                  new                  HashMap                  <                  String,                  String                  > ();         params.put(                    "id"                  ,                                      "1"                  );                  RestTemplate                  restTemplate                  =                  new                  RestTemplate();                  Employee                  result                  =                  restTemplate.getForObject(GET_EMPLOYEE_ENDPOINT_URL,                  Employee                  .class, params);                  System                  .out.println(result);     }                  private                  void                  createEmployee() {                  Employee                  newEmployee                  =                  new                  Employee(                    "admin"                  ,                                      "admin"                  ,                                      "admin@gmail.com"                  );                  RestTemplate                  restTemplate                  =                  new                  RestTemplate();                  Employee                  result                  =                  restTemplate.postForObject(CREATE_EMPLOYEE_ENDPOINT_URL, newEmployee,                  Employee                  .class);                  System                  .out.println(result);     }                  private                  void                  updateEmployee() {                  Map                  <                  String,                  String                  >                  params                  =                  new                  HashMap                  <                  String,                  String                  > ();         params.put(                    "id"                  ,                                      "1"                  );                  Employee                  updatedEmployee                  =                  new                  Employee(                    "admin123"                  ,                                      "admin123"                  ,                                      "admin123@gmail.com"                  );                  RestTemplate                  restTemplate                  =                  new                  RestTemplate();         restTemplate.put(UPDATE_EMPLOYEE_ENDPOINT_URL, updatedEmployee, params);     }                  private                  void                  deleteEmployee() {                  Map                  <                  String,                  String                  >                  params                  =                  new                  HashMap                  <                  String,                  String                  > ();         params.put(                    "id"                  ,                                      "1"                  );                  RestTemplate                  restTemplate                  =                  new                  RestTemplate();         restTemplate.delete(DELETE_EMPLOYEE_ENDPOINT_URL, params);     } }

Step 4: Running SpringRestClient class

SpringRestClient class contains amain() method so just right click and run as Java Application. You will see below output in the console:

References

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html

Video

Free Spring Boot Tutorial | Full In-depth Course | Learn Spring Boot in 10 Hours


Watch this course on YouTube at Spring Boot Tutorial | Fee 10 Hours Full Course

tappshave1983.blogspot.com

Source: https://www.javaguides.net/2019/06/spring-resttemplate-get-post-put-and-delete-example.html

0 Response to "Java Spring Rest Delete Example"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel