Apuntes
Sin título
Contenido del apunte (6)
Página 1
Json: JavaScript Object Notation
API key: chave de acesso da API
url do endereço: Query string
OMDb API - The Open Movie DatabaseOMDb API - The Open Movie Database
Design Pattern: Padrão de projeto
HttpResponse
HttpClient
O HttpClient é o mecanismo oficial do Java para enviar e receber informações pela internet através do protocolo HTTP, permitindo que seu programa converse com APIs, serviços externos e sites, de uma forma simples, moderna e eficiente.
🌍 CONTEXTO: O QUE É HTTP?
Antes de entender o HttpClient, você precisa entender HTTP.
HTTP = HyperText Transfer Protocol
É o protocolo que controla como computadores conversam na internet.
Quando você:
abre o Google
vê um vídeo no YouTube
acessa uma API
Você está enviando requisições HTTP e recebendo respostas HTTP.
✔️ É uma ferramenta do Java para fazer requisições HTTP
O Java precisa de alguma classe para conseguir:
acessar sites
acessar APIs
baixar arquivos
enviar dados
buscar dados
➡️ Essa classe é o java.net.http.HttpClient
1. HttpClient → o navegador/ mensageiro
Ele é o responsável por enviar a requisição e receber a resposta.
HttpClient client = HttpClient.newHttpClient();
É como abrir um navegador invisível dentro do seu código Java.
2. HttpRequest → a requisição
É o “pacote” que você manda.
Contém:
URL (endereço)
método HTTP (GET, POST…)
cabeçalhos
corpo da mensagem (opcional)
HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://www.omdbapi.com/?t=matrix&apikey=fc766f5b")) .build();
3. HttpResponse → a resposta
É o que o servidor mandou de volta.
HttpResponse response = client.send( request, HttpResponse.BodyHandlers.ofString() );
O HttpResponse contém:
código de status (200, 404, 500)
cabeçalhos
corpo da resposta (JSON, HTML, texto, etc.)
🎯 EXEMPLO VISUAL COMPLETO
Imagine que o Java está fazendo isso 👇
Você → HttpClient → Servidor (API) → HttpClient → Você
Você cria um mensageiro (HttpClient)
Prepara uma carta com o endereço da API (HttpRequest)
Pede para o mensageiro enviar (client.send())
O mensageiro pega a resposta (HttpResponse)
Você lê o conteúdo (response.body())
O QUE VOCÊ CONSEGUE FAZER COM ELE?
✔️ Requisições GET (pegar dados)
✔️ Requisições POST (enviar dados)
✔️ Requisições simultâneas
✔️ Trabalhar com JSON
✔️ Chamar APIs REST
✔️ Baixar arquivos
✔️ Enviar informações em formulários
Página 2
String endereco = "https://www.omdbapi.com/?t=" + busca + "&apikey=fc766f5b";
O QUE ESSA LINHA FAZ?
Ela constrói a URL completa que o Java vai usar para fazer a pesquisa na API do OMDb.
A URL precisa ter 3 partes:
O endereço base da API
O nome do filme que o usuário digitou
A chave (apikey)
Essa linha junta tudo isso automaticamente.
➤ 1. Parte fixa da API
"https://www.omdbapi.com/?t="
➤ 2. Parte que o usuário digitou
+ busca +
Se o usuário digitar:
divertidamente
então:
busca = "divertidamente"
➤ 3. Sua chave de acesso (obrigatória)
"&apikey=fc766f5b"
Sem isso a API nem responde.
HttpRequest = a carta escrita.
HttpClient = o carteiro.
Página 3
Biblioteca Gson
✅ 1. O que é Gson?
Gson é uma biblioteca Java criada pelo Google.
Ela serve para:
✔ Converter JSON → Objeto Java
Exemplo: transformar o JSON recebido de uma API em um objeto Titulo.
Gson gson = new Gson();
Titulo titulo = gson.fromJson(json, Titulo.class);
Ex: TitleOmdb myTitleOmdb = gson.fromJson(json, TitleOmdb.class)
É a mesma coisa que: Pegue esse JSON e transforme ele em um objeto Java da classe TitleOmdb.
TitleOmdb.class → diz para o Gson em qual classe ele deve colocar esses dados.
O Gson olha o JSON, encontra "Title" e "Year", e preenche:
new TitleOmdb("Matrix", 1999)
O json é aquele texto enorme que você recebeu da API.
O gson.fromJson() lê esse texto e cria um objeto Java da classe TitleOmdb.
Essa classe normalmente é um record, assim:
public record TitleOmdb(String Title, String Year, String Runtime) {}
Ou seja, armazenou exatamente o que vem da API.
✔ Converter Objeto Java → JSON
(Por exemplo, para enviar dados numa API.)
String json = gson.toJson(titulo);
⭐ Em resumo:
Gson é um conversor de JSON para Java e de Java para JSON.
✅ 2. O que é new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE) ?
GsonBuilder é usado para configurar o Gson antes de criá-lo.
Quando você escreve:
Gson gson = new GsonBuilder() .setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE) .create();
Você está dizendo:
📌 “Quando for converter JSON ↔ Java, use nomes de campos em UpperCamelCase”
Exemplo:
AnoDeLancamento
DuracaoEmMinutos
NomeDoFilme
Isso é útil quando a API envia JSON nesse formato.
Então pra que serve FieldNamingPolicy?
Serve para automatizar a conversão quando o JSON e a classe têm o mesmo nome de campos, mas com diferença no padrão de escrita.
.serializeNulls()
Use .serializeNulls() quando você quiser que objetos Java com valores null apareçam no JSON final.
Afeta apenas a SERIALIZAÇÃO → objeto Java ➜ JSON.
setLenient()
Quando usar setLenient()?
✔️ Use quando:
Você recebe JSON de fontes externas não confiáveis
APIs que retornam dados mal formatados
JSON vindo de pessoas (aplicativos, forms etc.)
Página 4
Record
vO que é record no Java?
Record é um tipo especial de classe criado para representar dados imutáveis de maneira muito mais simples do que uma classe comum.
Ele é como uma classe automática, já preparada para funcionar como DTO (Data Transfer Object).
Ou seja:
➡️ Um record guarda dados. Só isso.
➡️ Ele já vem com:
equals()
hashCode()
toString()
Construtor
Getters (mas sem o nome “get”)
E você não precisa escrever nada disso.
Ex: public record Pessoa(String nome, int idade) {}
No contexto do seu código (Gson e APIs)
Você usa record quando quer guardar uma resposta de API, como o JSON do OMDB.
Get no Record
Tipo Getter Classe comum getNome() Record nome()
Por que usar Integer em vez de int no record?(ou em qualquer classe usada pelo Gson)?
✔ 1. int não aceita null
Se o JSON vier assim:
{ "name": "Brenda", "city": "Rio de Janeiro" }
E não tiver age, o Gson tenta colocar null no campo age.
Se age for int, ocorre erro → porque int é primitivo e jamais pode ser null.
Se age for Integer, funciona → Integer aceita valor null.
Com integer:
✔ Campos podem estar ausentes
✔ Campos podem vir com null
✔ Campos podem vir com tipos inesperados
Campos extras
Gson ignora campos extras automaticamente ✔
Página 5
Titulo myTitle = new Titulo(myTitleOmdb);
➡️ Tradução humana:
“Use o objeto TitleOmdb e crie um objeto da classe Titulo.”
➡️ Por quê?
Porque Titulo é sua classe oficial, usada no projeto da Alura.
TitleOmdb é só um modelo temporário que representa os dados da API.
Então você converte:
TitleOmdb → Titulo
⭐ RESUMÃO MÁGICO (tipo criança de 5 anos)
Baixa JSON da internet
Gson lê o JSON
Converte JSON → Objeto TitleOmdb(Record)
Você transforma TitleOmdb → Titulo
Usa Titulo no resto do programa
TitleOmdb = modelo que representa o JSON bruto da API.
Titulo = modelo limpo, organizado, usado no seu sistema.
Construtor
public Titulo(TitleOmdb myTitleOmdb) { }
Quando usar um construtor assim?
Use quando:
✓ quiser converter API → Objeto interno
✓ quiser garantir que o objeto sempre nasça válido
✓ quiser centralizar regras (ex: parse de número, remover texto, validar ano)
Integer.parseInt() x Integer.valueOf()
✔ Use parseInt quando quiser sempre int
É mais direto e um pouco mais rápido.
✔ Use valueOf quando precisar de Integer
Por exemplo:
Quando o atributo for Integer.
Quando você precisar guardar em uma List<Integer>.
Quando o valor pode ser null.
📌 Sobre substring(0, 2)
Em Java, quando você usa:
substring(inicio, fim)
O início (0) é inclusivo — começa a contar dali.
O fim (2) é exclusivo — não inclui o índice 2.
Então, se você tem:
índices: 0 1 2 3 4
texto: A B C D E
substring(0, 2) pega:
índice 0 → 'A'
índice 1 → 'B'
não pega o índice 2
➡️ Resultado: "AB"
Página 6
Json
Ligação automática: JSON → Tipos do Java
{} → objeto
[] → lista
"" → texto
123 → número
true/false → booleano
1. O que é JSON aninhado?
É quando, dentro de um JSON, um campo não é um valor simples, mas sim outro objeto.
Exemplo
{
"titulo": "Aventuras do Java",
"autor": "Akemi",
"editora": {
"nome": "TechBooks",
"cidade": "São Paulo"
}
}
➡ Aqui, "editora" é um objeto dentro de outro objeto.
Información
- Descripción
- Java Java: consumindo API, gravando arquivos e lidando com erros Apunte sobre Sin título, creado por Brenda Gabriela Senra da Silva el 14/11/2025.
- Creado por
- Brenda Gabriela Senra da Silva
- Visitas
- 5
- Valoración