RestTemplate
- Spring RestTemplate is available on Spring-web module.
- RestTemplat supports all HTTP, HTTPS protocols
- RestTemplate supports HTTP all methods like GET, POST, DELETE, PUT ...etc.
Controller
package com.example.demo.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import com.example.demo.service.EmployeeService;
@Controller
public class MyController {
@Autowired
private EmployeeService employeeService;
@GetMapping("/getEmployees")
@ResponseBody
public Object getEmployees() {
return employeeService.getEmployees();
}
@GetMapping("/createEmployee")
@ResponseBody
public Object createEmployee(@RequestBody Object employee) {
return employeeService.createEmployee(employee);
}
@GetMapping("/getEmployee/{employeeId}")
@ResponseBody
public Object getEmployee(@PathVariable("employeeId") int employeeId) {
return employeeService.getEmployee(employeeId);
}
@GetMapping("/deleteEmployee/{employeeId}")
@ResponseBody
public void deleteEmployee(@PathVariable("employeeId") int employeeId) {
employeeService.deleteEmployee(employeeId);
}
}
Service
package com.example.demo.service;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
@Service
public class EmployeeService {
private final RestTemplate restTemplate;
public EmployeeService(RestTemplateBuilder restTemplateBuilder) {
this.restTemplate = restTemplateBuilder.build();
List<HttpMessageConverter<?>> messageConverters = new ArrayList<>();
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setSupportedMediaTypes(Collections.singletonList(MediaType.ALL));
messageConverters.add(converter);
this.restTemplate.setMessageConverters(messageConverters);
}
public Object getEmployees() {
return this.restTemplate.getForObject("http://dummy.restapiexample.com/api/v1/employees", List.class);
}
public Object getEmployee(int employeeId) {
return this.restTemplate.getForObject("http://dummy.restapiexample.com/api/v1/employee/" + employeeId,
Object.class);
}
public Object createEmployee(Object employee) {
ResponseEntity<Object> response = this.restTemplate
.postForEntity("http://dummy.restapiexample.com/api/v1/employee/", employee, Object.class);
return response.getBody();
}
public void deleteEmployee(int employeeId) {
this.restTemplate.delete("http://dummy.restapiexample.com/api/v1/employee/" + employeeId, Object.class);
}
}
Gradle file
plugins {
id 'org.springframework.boot' version '2.1.6.RELEASE'
id 'java'
}
apply plugin: 'io.spring.dependency-management'
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
App
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class RestTemplateExampleApplication {
public static void main(String[] args) {
SpringApplication.run(RestTemplateExampleApplication.class, args);
}
}