☁️ 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:

  1. Pasta: br.com.curso.pokedex.data.model
  2. Pasta: br.com.curso.pokedex.data.network (Para as interfaces da API)

📖 Exemplo Passo a Passo: Modelando o Pokémon

  1. Veja como o dado chega (JSON):
    { "id": 25, "name": "pikachu" }
  2. 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):

  1. Envie a URL do seu Beeceptor.
  2. Envie o código da sua Interface.
  3. Submeta no canal de tarefas.

Capitulo Anterior | Proximo Capitulo