Eu já estou a ver conteúdos mais avançados sobre Java, mas gosto sempre de voltar um pouco e relembrar alguns conceitos do passado. Uma coisa que não gosto e que não gostei muito quando estava aprendendo sobre consumo de APIs Web em Java, é que ficávamos muito dependentes de várias classes espalhadas de forma confusa, como HttpClient, HttpRequest e HttpResponse. Isso incomodava um pouco, além de os métodos estarem soltos e termos que nos virar.
Foi daí que comecei a criar uma Lib Java para facilitar essas tarefas, centralizando as funções mais importantes. A ideia é eliminar o boilerplate e o código confuso, alem de aumentar a produtividade.
Essa lib possui diversas funções, dentre elas:
Http: Uma API fluente baseada no padrão Builder para fazer requisições HTTP (GET, POST, JSON, etc.) de forma simplificada. Ela cuida automaticamente de queries, form data, autenticação (Basic e Bearer), e ainda inclui retries automáticos em caso de falha de rede e logging detalhado. A resposta (ResponseWrapper) já tem métodos para verificar o status e deserializar o JSON diretamente para um objeto Java (.asJson(Class)).
Env: Simplifica o carregamento de variáveis de ambiente via arquivos
.env(usando o padrão Dotenv). Isso garante que as credenciais e as configurações sensíveis permaneçam seguras e separadas do código.Serializer: Centraliza a conversão de objetos Java para JSON e vice-versa, além de adicionar métodos fáceis para salvar e carregar objetos diretamente de arquivos (tanto JSON quanto binários/Base64), cuidando da persistência de forma muito mais limpa.
Exemplo
1. Env - Carregamento Simplificado de Variáveis de Ambiente
Carrega o arquivo .env automaticamente no diretório atual e obtém uma chave.
// 1. Carrega o .env
Env.builder().fastload();
// 2. Obtém a variável
String apiKey = Env.get("OMDB_API_KEY");
2. Http - Requisições Fluentes e Deserialização Direta
Faz a requisição GET e deserializa o JSON da resposta diretamente para um objeto Java.
TituloOmdb filme = Http.build()
.GET(url) // Envia GET para a URL
.acceptJson() // Header: Accept: application/json
.send() // Executa a requisição
.asJson(TituloOmdb.class); // Deserializa o corpo JSON
3. Serializer + File - Persistência de Objetos em JSON
Serializa uma lista de objetos Java para JSON e salva o resultado no caminho especificado em uma cadeia de chamadas.
File.at(MOVIES_FILE_PATH)
.createDirectoriesIfNeeded() // Garante que a pasta exista
.createIfNotExists() // Garante que o arquivo exista
.write(Serializer.serialize(movies)); // Serializa e escreve o JSON