Last active
September 6, 2021 20:31
-
-
Save ratulSharker/a9310300428ce836dff330300315902d to your computer and use it in GitHub Desktop.
RestTemplate wrapper for REST call in spring boot.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package your.package.name.here; | |
import org.springframework.context.annotation.Bean; | |
import org.springframework.context.annotation.Configuration; | |
import org.springframework.http.MediaType; | |
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; | |
import org.springframework.web.client.RestTemplate; | |
@Configuration | |
public class RestConfiguration { | |
@Bean | |
public RestService restService(RestTemplate restTemplate) { | |
return new RestService(restTemplate); | |
} | |
@Bean | |
public RestTemplate restTemplate() { | |
RestTemplate restTemplate = new RestTemplate(); | |
restTemplate.getMessageConverters().add(getMappingJackson2HttpMessageConverter()); | |
return restTemplate; | |
} | |
public MappingJackson2HttpMessageConverter getMappingJackson2HttpMessageConverter() { | |
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(); | |
mappingJackson2HttpMessageConverter | |
.setSupportedMediaTypes(Collections.singletonList(MediaType.APPLICATION_FORM_URLENCODED)); | |
return mappingJackson2HttpMessageConverter; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package your.package.name.here; | |
import org.springframework.core.ParameterizedTypeReference; | |
import org.springframework.http.HttpEntity; | |
import org.springframework.http.HttpHeaders; | |
import org.springframework.http.HttpMethod; | |
import org.springframework.http.MediaType; | |
import org.springframework.http.ResponseEntity; | |
import org.springframework.lang.Nullable; | |
import org.springframework.web.client.RestTemplate; | |
public class RestService { | |
private final RestTemplate restTemplate; | |
public RestService(RestTemplate restTemplate) { | |
this.restTemplate = restTemplate; | |
} | |
public <T> T get(String url, ParameterizedTypeReference<T> returnType) { | |
return request(url, HttpMethod.GET, null, returnType, false); | |
} | |
public <T> T post(String url, @Nullable Object body, ParameterizedTypeReference<T> returnType, boolean isFormData) { | |
return request(url, HttpMethod.POST, body, returnType, isFormData); | |
} | |
public <T> T put(String url, @Nullable Object body, ParameterizedTypeReference<T> returnType, boolean isFormData) { | |
return request(url, HttpMethod.PUT, body, returnType, isFormData); | |
} | |
public <T> T patch(String url, @Nullable Object body, ParameterizedTypeReference<T> returnType, | |
boolean isFormData) { | |
return request(url, HttpMethod.PATCH, body, returnType, isFormData); | |
} | |
public <T> T delete(String url, ParameterizedTypeReference<T> returnType) { | |
return request(url, HttpMethod.DELETE, null, returnType, false); | |
} | |
private <T> T request(String url, HttpMethod method, @Nullable Object body, | |
ParameterizedTypeReference<T> returnType, boolean isFormData) { | |
HttpEntity<Object> requestEntity = null; | |
if (body != null) { | |
HttpHeaders headers = new HttpHeaders(); | |
if (isFormData) { | |
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); | |
} | |
requestEntity = new HttpEntity<Object>(body, headers); | |
} | |
ResponseEntity<T> responseEntity = restTemplate.exchange(url, method, requestEntity, returnType); | |
return responseEntity.getBody(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment