Насколько мне известно, есть два распространенных способа сделать API
запросы в Spring Boot
.
- RestTemplate
- WebClient
Большинство людей обычно используют RestTemplate
. Но в ближайшие годы он будет упразднен. Поэтому я рекомендую вам использовать WebClient
.
Ниже WebClient
POST REQUEST Пример:
@Autowired
private WebClient.Builder webClientBuilder;
Turnover turnover = new Turnover();
Gson resp = webClientBuilder.build()
.post()
.uri("url")
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON )
.body(Mono.just(turnover),Turnover.class)
.retrieve()
.bodyToMono(Gson.class).block();
Turnover.java
@Getter
@Setter
public class Turnover {
private String start_date;
private String end_date;
private String account;
public Turnover(){
setStart_date("01.01.2020");
setEnd_date("01.06.2020");
setAccount("20293435454");
}
}
webClientBuilder Bean
. В моем случае у меня было PROXY
. Итак, я использовал URL-адрес и порт прокси.
@Bean
public WebClient.Builder getWebClientBuilder(){
HttpClient httpClient = HttpClient.create()
.tcpConfiguration(tcpClient ->
tcpClient.proxy(proxy -> proxy.type(ProxyProvider.Proxy.HTTP).host("url").port(portnumber)));
ReactorClientHttpConnector connector = new ReactorClientHttpConnector(httpClient);
return WebClient.builder().clientConnector(connector);
}
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
И не забудьте создать Bean
WebClient в вашем классе Main java. Выше я привел только пример. Вам необходимо изменить аргументы в соответствии с вашими требованиями.