WebClient POST. callicoder.com.
, WebClient. . , URL-, . . , , body() .
WebClient POST. , 4XX, . 501. : LinkedMultiValueMap , java.util.Map.
, GitHub V3 API :
@Bean
public WebClient client() {
return WebClient.builder()
.baseUrl("https://api.github.com")
.defaultHeader("User-Agent", "Spring-boot WebClient")
.filter(ExchangeFilterFunctions.basicAuthentication("YOUR_GITHUB_USERNAME", "YOUR_GITHUB_TOKEN"))
.filter(printlnFilter).build();
}
ExchangeFilterFunction printlnFilter= new ExchangeFilterFunction() {
@Override
public Mono<ClientResponse> filter(ClientRequest request, ExchangeFunction next) {
System.out.println("\n\n" + request.method().toString().toUpperCase() + ":\n\nURL:"
+ request.url().toString() + ":\n\nHeaders:" + request.headers().toString() + "\n\nAttributes:"
+ request.attributes() + "\n\n");
return next.exchange(request);
}
};
String returnedJSON = client.post().uri(builder->builder.path("/user/repos").build())
.contentType(MediaType.APPLICATION_JSON)
.syncBody(new LinkedMultiValueMap<String, String>(){{
put("name", "tett");
}})
.retrieve()
.bodyToMono(String.class)
.block(Duration.ofSeconds(3))
, :
2018-04-07 12:15:57.823 INFO 15448 --- [ main] o.s.b.web.embedded.netty.NettyWebServer : Netty started on port(s): 8084
2018-04-07 12:15:57.828 INFO 15448 --- [ main] c.e.w.WebclientDemoApplication : Started WebclientDemoApplication in 3.892 seconds (JVM running for 8.426)
POST:
URL:https:
Headers:{Content-Type=[application/json], User-Agent=[Spring-boot WebClient], Authorization=[Basic XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX]}
Attributes:{}
, :
1. . , .
2. WebClient.
https://www.callicoder.com/spring-5-reactive-webclient-webtestclient-examples/ - , , .