Skip to main content

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

Popular posts from this blog

Spring boot video streaming example-HTML5

This article shows you how to stream MP4 video in Spring Boot web application 
User Interface

Project Structure

Home Controller
@Controller
public class HomeController {
 @Autowired
 private MyResourceHttpRequestHandler handler;
 private final static File MP4_FILE = new File("D:\\videofiles\\video1.mp4");
 // supports byte-range requests
 @GetMapping("/index")
 public String home() {
  return "index";
 }
 // supports byte-range requests
 @GetMapping("/byterange")
 public void byterange( HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  request.setAttribute(MyResourceHttpRequestHandler.ATTR_FILE, MP4_FILE);
  handler.handleRequest(request, response);
 }}
Spring Boot 
@SpringBootApplication
@ComponentScan({ "com" })
public class KnowledgefactorydemoApplication {
 public static void main(String[] args) {
  SpringApplication.run(KnowledgefactorydemoApplication.class, args);
 }}
MyResource HttpRequestHandler
@Componen…

DataTable-Pagination example with Spring boot,jQuery and ajax free download

This article shows you DataTable-Pagination example with Spring boot, jQuery and ajax. 

Following technologies stack being used:
Spring Boot 2.1.1.RELEASESpring 5.1.3.RELEASE Maven 3DatatablejQueryFree Markerjavascriptajax Project Structure
View(index.ftl) <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Knf|Pagination-Datatables</title> <!-- Tell the browser to be responsive to screen width --> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="../../css/jquery.dataTables.min.css"> <body>  <section class="content">   <div class="container-fluid">    <table id="example" class="display" style="width: 100%">     <thead>      <tr>       <th>First name</th>       <th>La…

9 Best Job Posting Sites for Employee 2020-2022

One of the most common ways today’s job seekers uncover employment opportunities are by using online sources. There are hundreds of job boards, both generic and niche, as well as aggregators, social media channels, networking groups, and staffing company websites to choose from. The good news is they provide plenty of listings. The bad news is you can be easily overwhelmed by so many options. Here, knowledge factory offers 9 of what is generally considered the best job search websites around. There are many others, of course, but this list of best job search websites should give you a good starting point for your next job hunt: 1. LinkedIn
This top networking site allows you to find jobs through your extended network. User profiles serve as resumes. You can easily share career-related content and solicit or supply recommendations. Additionally, you can join groups, participate in conversations, and follow companies you find interesting and relevant to your job search. Premium pai…