1
resposta

[Projeto] Projeto Final

Abaixo meu projeto para buscador de CEP, utilizei as aulas e dicas para montar o meu, com algumas alterações e um loop para adicionar mais de um endereço no arquivo .JSON, além disso, possui uma verificação para caso o usuário não insira nenhum objeto.

Record Endereco

package CursoAPI.Exercicios.Aula4.ProjetoAPI;

public record Endereco(
        String cep,
        String logradouro,
        String complemento,
        String bairro,
        String localidade,
        String uf
) {}

APIConsumer

package CursoAPI.Exercicios.Aula4.ProjetoAPI;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

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 APIConsumer {

    public Endereco getEnderecoByCep(String cep) throws IOException, InterruptedException {

        String url = "https://viacep.com.br/ws/" + cep + "/json/";

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(url))
                .build();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        String json = response.body();

        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        return gson.fromJson(json, Endereco.class);
    }
}

JsonWriter com a criação de uma array para armazenar os inputs e método para verificar se array está vazio

package CursoAPI.Exercicios.Aula4.ProjetoAPI;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class JsonWriter {

    private List<Endereco> enderecos = new ArrayList<>();

    public void addEndereco(Endereco endereco) {
        enderecos.add(endereco);
    }

    public boolean isEmpty() {
        return enderecos.isEmpty();
    }

    public void writeFile(String filePath) throws IOException {

        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        FileWriter writer = new FileWriter(filePath);
        writer.write(gson.toJson(enderecos));
        writer.close();
    }
}

Main

package CursoAPI.Exercicios.Aula4.ProjetoAPI;

import java.io.IOException;
import java.util.Scanner;

public class MainAPI {
    public static void main(String[] args) {

        Scanner leitura = new Scanner(System.in);
        APIConsumer api = new APIConsumer();
        JsonWriter jsonWriter = new JsonWriter();

        while (true) {

            System.out.println("Digite o CEP (ou 'sair' para encerrar):");
            String cep = leitura.nextLine();

            if (cep.equalsIgnoreCase("sair")) {
                break;
            }

            if (cep.isEmpty()) {
                System.out.println("Nenhum CEP digitado. Tente novamente.");
                continue;
            }

            try {
                Endereco endereco = api.getEnderecoByCep(cep);
                jsonWriter.addEndereco(endereco);
                System.out.println("Endereço adicionado com sucesso!");
            } catch (IOException | InterruptedException e) {
                System.out.println("Erro ao buscar o endereço: " + e.getMessage());
            }
        }

        if (jsonWriter.isEmpty()) {
            System.out.println("Nenhum endereço foi adicionado.");
            System.out.println("Programa encerrado.");
            return;
        } else {
            try {
                System.out.println("Escrevendo arquivo...");
                jsonWriter.writeFile("src/CursoAPI/Exercicios/Aula4/ProjetoAPI/endereco.json");
            } catch (IOException e) {
                System.out.println("Erro ao escrever o arquivo: " + e.getMessage());
            }
        }


        leitura.close();
        System.out.println("Programa encerrado.");
    }
}
1 resposta

Olá, Gabriel! Tudo certo?

Seu projeto de buscador de CEP parece estar bem estruturado e você fez um ótimo trabalho ao integrar diferentes componentes do Java para consumir a API, armazenar os dados e lidar com possíveis erros.

Continue explorando e experimentando novas ideias.

Bons estudos!