Usando o cliente HTTP reativo
Agora, vamos fazer um terminal que aceite um parâmetro de ID. Usaremos o cliente HTTP reativo da primavera e uma API de gelo e fogo para fazer uma solicitação para um Game of Thrones Personagem baseado no ID. Em seguida, enviaremos os dados do caractere de volta ao usuário. Observe o novo apiChain() Método e suas importações aqui:
import org.springframework.web.reactive.function.client.WebClient;
@GetMapping("character/{id}")
public Mono getCharacterData(@PathVariable String id) {
WebClient client = WebClient.create("https://anapioficeandfire.com/api/characters/");
return client.get()
.uri("/{id}", id)
.retrieve()
.bodyToMono(String.class)
.map(response -> "Character data: " + response);
}
Se você navegar para localhost:8080/character/148você terá informações biográficas para quem é obviamente o melhor personagem em The Game of Thrones.
Este exemplo funciona aceitando o parâmetro do caminho de identificação e usando -o para fazer uma solicitação ao WebClient aula. Nesse caso, estamos criando uma instância para nossa solicitação, mas você pode criar um WebClient com um URL base e depois reutilize -o repetidamente com muitos caminhos. Colocamos o ID no caminho e depois chamamos retrieve seguido pela bodyToMono()que transforma a resposta em um Mono. Lembre -se de que tudo isso permanece sem bloqueio e assíncrono; portanto, o código que aguarda a resposta da API não bloqueará o thread. Finalmente, nós usamos map() Para formular uma resposta de volta ao usuário.
