Quick Start: Spring Boot RestTemplate

This guide walks you through the process of creating an application that produces RESTful web services and consumes a RESTful web service.
To demonstrates the functionality we need a web service first.Name it ‘REST Producer’, because it provides data for the ‘REST Consumer’
1)REST Producer
Controller Class
@RestController
public class Controller {
 @Autowired
 UserService service;
 @GetMapping(value = "/getUser")
 public ResponseEntity<Map<Integer, User>> listAllUsers() {
  return new ResponseEntity<>(service.getUser(), HttpStatus.OK);
 }
 @PostMapping(value = "/deleteUser")
 public ResponseEntity<Map<Integer, User>> deleteUser(@RequestBody Key key) {
  return new ResponseEntity<>(service.deleteuser(key.getKey()), HttpStatus.OK);
 }
Key-POJO Class
  public class Key {
  private Integer key;
  public Integer getKey() {
  return key;
 }
  public void setKey(Integer key) {
  this.key = key;
 }}
User-POJO Class
public class User {
  private String name;
 private String mail;
  public String getName() {
  return name;
 }
  public void setName(String name) {
  this.name = name;
 }
  public String getMail() {
  return mail;
 }
  public void setMail(String mail) {
  this.mail = mail;
 }
  public User(String name, String mail) {
  super();
  this.name = name;
  this.mail = mail;
 }
  public static Map<Integer, User> userFactory() {
  User user1 = new User("sibin", "knowledgeFactory4upeoples@gmail.com");
  User user2 = new User("knf", "knowledgeFactory4upeoples@gmail.com");
  User user3 = new User("sibin2", "knowledgeFactory4upeoples@gmail.com");
  User user4 = new User("knf2", "knowledgeFactory4upeoples@gmail.com");
   Map<Integer, User> list = new HashMap<>();
  list.put(9898, user1);
  list.put(8456, user2);
  list.put(1234, user3);
  list.put(5678, user4);
  return list;
}}
Service Class(UserService)
@Service
public class UserService {
  public Map<Integer, User> getUser() {
   Map<Integer, User> list = User.userFactory();
   return list;
  }
  public Map<Integer, User> deleteuser(Integer UserId) {
   Map<Integer, User> list = User.userFactory();
  list.remove(UserId);
   return list;
 }}
Spring Boot(Main Class)
@SpringBootApplication
public class KnowledgefactorydemoApplication {
   public static void main(String[] args) {
         SpringApplication.run(KnowledgefactorydemoApplication.class, args);
     }
}
application.properties
server.port=9094
2)Rest Consumer
Controller
@RestController
public class Controller {
 @Autowired
 UserService service;
 @GetMapping(value = "/restTemplateGetTest")
 public ResponseEntity<Map<Integer, User>> listAllUsers() {
  return new ResponseEntity<>(service.getUser(), HttpStatus.OK);
 }
    @PostMapping(value = "/restTemplatePostTest")
 public ResponseEntity<String> deleteUser(@RequestBody Key key) throws URISyntaxException {
  return new ResponseEntity<>(service.deleteuser(key.getKey()), HttpStatus.OK);
 }
}
Key-POJO Class
public class Key {
 private Integer key;
 public Integer getKey() {
  return key;
 }
 public void setKey(Integer key) {
  this.key = key;
 }
}
User-POJO Class
public class User {
 private String name;
 private String mail;
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getMail() {
  return mail;
 }
 public void setMail(String mail) {
  this.mail = mail;
 }
}
User Service Class
@Service
public class UserService {
 public Map<Integer, User> getUser() {
  RestTemplate restTemplate = new RestTemplate();
  ResponseEntity<Map<Integer, User>> response = restTemplate.exchange("http://localhost:9094/getUser",
    HttpMethod.GET, null, new ParameterizedTypeReference<Map<Integer, User>>() {
    });
  Map<Integer, User> users = response.getBody();
  return users;
 }
 public String deleteuser(Integer UserId) throws URISyntaxException {
  RestTemplate restTemplate = new RestTemplate();
  Key key = new Key();
  key.setKey(UserId);
  String url = "http://localhost:9094/deleteUser";
  String commonResult = restTemplate.postForObject(url, key, String.class);
  return commonResult;
 }
}
Spring Boot (Main Class)
@SpringBootApplication
public class KnowledgefactorydemoApplication {
  public static void main(String[] args) {
         SpringApplication.run(KnowledgefactorydemoApplication.class, args);
     }
}
application.properties
server.port=9091
Test 
Start Rest Producer  and Rest Consumer 
$ mvn spring-boot:run
  
Case 1:GET Service Call
     http://localhost:9091/restTemplateGetTest
     Response-200:
{
1234:
{
name: "sibin2",
mail: "knowledgeFactory4upeoples@gmail.com"
},
5678:
{
name: "knf2",
mail: "knowledgeFactory4upeoples@gmail.com"
},
8456:
{
name: "knf",
mail: "knowledgeFactory4upeoples@gmail.com"
},
9898:
{
name: "sibin",
mail: "knowledgeFactory4upeoples@gmail.com"
}
}
Case 2:Post Service Call
http://localhost:9091/restTemplatePostTest
Body
{"key":8456} 
Response :200
{
    "1234": {
        "name": "sibin2",
        "mail": "knowledgeFactory4upeoples@gmail.com"
    },
    "5678": {
        "name": "knf2",
        "mail": "knowledgeFactory4upeoples@gmail.com"
    },
    "9898": {
        "name": "sibin",
        "mail": "knowledgeFactory4upeoples@gmail.com"
    }
}

Comments