☁️ Cap 11: Conectando ao Mundo (PokeAPI)
🎯 Objetivo da Aula: Ao final desta aula, você entenderá como os aplicativos “conversam” com a internet. Você aprenderá a criar um “Contrato” (Modelagem) e usar um “Dublê” (Mock) para simular dados de Pokémons sem precisar de conexão real no início.
🏢 O Cenário Prático (Seu Desafio): Você está criando a Pokedex Definitiva. Mas os dados dos Pokémons não estão no seu celular, eles estão em um servidor na nuvem (a PokeAPI). Seu desafio é aprender a pedir esses dados e entender como eles chegam até o seu código.
🧠 Fundamentos: A Teoria Traduzida
📖 Dicionário do Programador
- API: Imagine um garçom. Você pede o lanche (os dados), ele leva o pedido até a cozinha (o servidor) e traz a comida pronta para você.
- JSON: É a “bandeja” onde os dados chegam. É um formato de texto que o computador entende muito bem.
- Mock: É um servidor de mentirinha. Usamos para testar o app antes de conectar com o servidor real da PokeAPI.
🎨 Padrão de Modelagem
No Android, os dados que chegam da internet moram na pasta data/model/. O nome da classe deve ser o que o dado representa. Ex: PokemonResponse.kt.
graph LR A[App Pokedex] -->|Pedido: ID 25| B{Garçom: API} B -->|Bandeja: JSON| A
🏗️ Construindo o Projeto (Checklist Studio)
Para este novo módulo, organize suas pastas:
- Pasta:
br.com.curso.pokedex.data.model - Pasta:
br.com.curso.pokedex.data.network(Para as interfaces da API)
📖 Exemplo Passo a Passo: Modelando o Pokémon
- Veja como o dado chega (JSON):
{ "id": 25, "name": "pikachu" } - Crie a classe correspondente no Kotlin:
package br.com.curso.pokedex.data.model data class Pokemon( val id: Int, val name: String )
🛠️ Prática Obrigatória 1:
Utilize o Beeceptor para criar uma rota GET /meu-poke. Configure para que ela retorne um JSON com o nome e o poder de um personagem de jogo.
🛠️ Prática Obrigatória 2:
Crie a interface GameService na pasta data/network. Ela deve ter uma função para buscar o herói que você criou no Mock.
🔑 Gabarito Passo a Passo:
package br.com.curso.pokedex.data.network
import retrofit2.http.GET
interface GameService {
@GET("meu-poke")
suspend fun buscarHeroi(): Personagem
}
data class Personagem(val name: String, val power: String)📤 Instruções de Entrega (Microsoft Teams):
- Envie a URL do seu Beeceptor.
- Envie o código da sua Interface.
- Submeta no canal de tarefas.