GoConqr has a new look! Let us know what you think.

Notes

Untitled

Brenda Gabriela Senra da Silva Java: consumindo API, gravando arquivos e lidando com erros Java Portuguese 6 pages

Content of the notes (6)

Page 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

Page 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.

Page 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.)

Page 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 ✔

Page 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"

Page 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.

Information

Description
Java Java: consumindo API, gravando arquivos e lidando com erros Note on Untitled, created by Brenda Gabriela Senra da Silva on 14/11/2025.
Views
5
Rating

Feedback

What is it about?

What do you think of the new look?

How do you like it?