Ola, queria poder saber se meu código esta bom, se eu poderia melhorar ou algo do tipo?
Classe de conexao com a API:
package programa.endereco.modelos;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonSyntaxException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.ArrayList;
import java.util.List;
public class ConexaoApiCEP {
private static final String ARQUIVO_JSON = "Localizacoes.json";
public void fazerBusca (String cep) throws IOException, InterruptedException {
try {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://viacep.com.br/ws/" + cep + "/json/"))
.build();
HttpResponse<String> response = client
.send(request, HttpResponse.BodyHandlers.ofString());
String json = response.body();
Gson gson = new GsonBuilder()
.setPrettyPrinting()
.create();
ViaCEPRecord tradutor = gson.fromJson(json, ViaCEPRecord.class);
Localizacao local = new Localizacao(tradutor);
List<Localizacao> listaDeLocal = carregarListaDoArquivo();
listaDeLocal.add(local);
System.out.println(local);
try (FileWriter escreverArquivo = new FileWriter(ARQUIVO_JSON)) {
escreverArquivo.write(gson.toJson(listaDeLocal));
}
}catch (IllegalArgumentException e){
System.out.println("URL nao conseguiu ser criado!" + e.getMessage());
}catch (JsonSyntaxException | IllegalStateException e){
System.out.println("Numero a mais na consulta do cep.");
}
}
private List<Localizacao> carregarListaDoArquivo() {
try (FileReader leitor = new FileReader(ARQUIVO_JSON)) {
return new Gson().fromJson(leitor, ArrayList.class);
} catch (IOException | JsonSyntaxException e) {
return new ArrayList<>();
}
}
}
Classe Main:
package programa.endereco;
import programa.endereco.modelos.ConexaoApiCEP;
import java.io.IOException;
import java.util.Scanner;
public class Principal {
public static void main(String[] args) throws IOException, InterruptedException {
Scanner busca = new Scanner(System.in);
String fecharPrograma = "";
while (!fecharPrograma.equalsIgnoreCase("sair")) {
System.out.println("Insira um cep para busca: ");
String cep = busca.nextLine();
ConexaoApiCEP conexao = new ConexaoApiCEP();
conexao.fazerBusca(cep);
System.out.println("\nDeseja buscar mais CEP? ");
fecharPrograma = busca.nextLine();
}
System.out.println("Sistema encerrado.");
}
}