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 (4)

Collapse
 
buildbasekit profile image
buildbasekit

RestTemplate was one of those things every Spring Boot dev used at some point πŸ˜„

The funny part is most tutorials stop at getForObject(), but real projects quickly turn into handling headers, auth tokens, retries, and error handling.

Still a clean beginner-friendly explanation for understanding how service-to-service communication works.

Collapse
 
ayushsingh1610 profile image
Ayush Singh

Currently I am working on this, will add more methods in the following days. Thanks for your comment.

Collapse
 
buildbasekit profile image
buildbasekit

nice, adding error handling and timeouts next would make it way more production-realistic too

a lot of beginners don’t realize one slow downstream service can quietly block threads and slow the whole app

Thread Thread
 
ayushsingh1610 profile image
Ayush Singh

Sure