Olá! Venho com outro questionamento/sugestão.
Dentro da classe ClientHttpConfiguration, não seria interessante instanciar o client "globalmente" para ser utilizado por ambos métodos de disparar requisição, ao invés de criá-los separadamente em cada método?
Eu me perguntei se por se tratarem de verbos HTTP distintos pudesse gerar algum erro, no entanto ao testar na minha aplicação funcionou.
Criá-los dentro de cada método seria para evitar a criação dessa instância automaticamente ao rodar a aplicação? Ou teria alguma outra explicação para essa escolha?
Abaixo exemplo de como ficou minha classe de gerenciamento de requisições.
package br.com.alura.client;
import com.google.gson.JsonObject;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class ClientHttpConfig {
HttpClient client = HttpClient.newHttpClient();
public HttpResponse<String> dispararReqGet(String uri) throws IOException, InterruptedException {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(uri))
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
return client.send(request, HttpResponse.BodyHandlers.ofString());
}
public HttpResponse<String> dispararReqPost(String uri, JsonObject json) throws IOException, InterruptedException {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(uri))
.header("Content-Type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString(json.toString()))
.build();
return client.send(request, HttpResponse.BodyHandlers.ofString());
}
}