DEV Community

Ayush Singh
Ayush Singh

Posted on

Consuming RESTful API services using Rest Template

One of most important and basic operations in Java Backend is Consuming Rest api. In this blog I use REST Template to demonstrate the task.

GET Method

You have to create 2 projects, from one demo we use other's get endpoint.

For 1st Project, which only has the name[Your name].

  1. You have to add spring-web dependency for web services.

    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-webmvc</artifactId>
    </dependency>
    


    java

  2. Create a MainController class in the controller package.

  3. Add @RestController annotation to make it RESTful web services and instruct it to return the data instead of view.

  4. Add a Get endpoint return your name.

 package com.example.demo.controller;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;

 @RestController
 public class MainController {

    @GetMapping("/name")
    public String myName() {
        return "Ayush Singh";
    }
  }
Enter fullscreen mode Exit fullscreen mode
  1. Add a variable in application.properties to change the server port, server.port = 9090.

For 2nd Project, do the same for dependencies and controller.

  1. Create a Rest Template bean OR initialize it in the MainController class. private RestTemplate rest; public MainController() { rest = new RestTemplate(); } java
  2. Create a hello() method for showing the greeting and annotate it with @GetMapping("/hello")
  3. In the application.properties create a variable to store the url like name.service.url = http://localhost:9090. This will be the url from where we fetch the name of the user.
  4. Add a field in the MainController name baseUrl to inject the value of the url of another server.

    @Value("${name.service.url}")
    private String baseUrl;
    
  5. Create a full URI by adding base url and resource name.

  6. Now implement the getForObject() method to get the data from the another server.

    String response = rest.getForObject(url, String.class);
    
    • url is the full url.
    • String.class is the response type.
  7. At last return the response variable add with Hello.

    return "Hello " + response;
    

Top comments (0)