Aula de hoje · 180 min

Python essencial para chamar uma API

APIs são a porta de entrada para dados e serviços na internet. Saber consumir APIs com Python abre um mundo de possibilidades para integrar sistemas, automatizar tarefas e construir aplicações inteligentes que usam informações externas em tempo real.

Objetivo: Ensinar o aluno a compreender e executar chamadas HTTP a APIs REST usando Python, interpretar respostas JSON, tratar erros comuns e aplicar esse conhecimento em situações reais de consumo de dados externos.

📘
Boas-vindas
🧠
Teoria Guiada
🛠️
Prática Prática
📺
Vídeoaula
✍️
Quiz & Feedback

Plano de estudo para 3 horas

Aqui está o roteiro sugerido de 180 minutos para que você aproveite ao máximo sem fadiga:

  1. 40 — Teoria guiada com slides e exemplos de requisições HTTP e respostas JSON, explicando cada componente (endpoint, método, parâmetros, status code, corpo).
  2. 30 — Demonstração prática no Python usando requests para chamar a API ViaCEP, mostrando passo a passo a construção da URL, envio da requisição, leitura do status code e parsing do JSON.
  3. 50 — Exercício guiado: aluno faz chamadas à API Agify com diferentes nomes, anota parâmetros usados, status code e campos principais da resposta, e registra hipóteses para possíveis erros.
  4. 30 — Prática livre: aluno usa o navegador para explorar a API JSONPlaceholder, observando a estrutura da URL, parâmetros e resposta JSON, anotando dúvidas e insights.
  5. 20 — Quiz interativo com perguntas sobre conceitos-chave: métodos HTTP, status codes, interpretação de JSON e erros comuns.
  6. 30 — Reflexão e discussão: aluno escreve um breve resumo do que aprendeu, dificuldades encontradas e como aplicaria o conhecimento para integrar APIs em projetos reais.

Materiais sugeridos

Ferramentas e referências que usaremos para as práticas de hoje:

  • Python 3 instalado no computador
  • Biblioteca requests (instalar via pip install requests)
  • Navegador de internet para acessar APIs via URL
  • Editor de código (ex: VSCode, PyCharm, ou mesmo bloco de notas)
  • Links úteis: https://viacep.com.br/ws/01001000/json/, https://api.agify.io?name=claudia, https://jsonplaceholder.typicode.com/posts/1
  • Documentação MDN sobre HTTP Methods e Status Codes

Teoria guiada

Leia os conceitos com calma. Cada bloco traz explicações diretas, analogias e checkpoints de aprendizado.

O que é uma API e como funciona o contrato entre sistemas

API (Interface de Programação de Aplicações) é um conjunto de regras que permite que sistemas diferentes conversem entre si. Imagine que você está em um restaurante: a API é o cardápio e o garçom. Você escolhe o prato (endpoint), especifica detalhes (parâmetros), o garçom (protocolo HTTP) leva seu pedido para a cozinha (servidor) e traz a comida pronta (resposta JSON).

Um endpoint é uma URL específica que representa um recurso ou serviço. Os métodos HTTP indicam a ação desejada (ex: GET para obter dados, POST para enviar dados). Parâmetros podem ser enviados na URL (query parameters) ou no corpo da requisição. Headers carregam informações adicionais, como tipo de conteúdo. A resposta inclui um status code que indica sucesso ou erro, e um corpo geralmente em JSON com os dados solicitados.

Exemplo real: Exemplo de endpoint: https://viacep.com.br/ws/01001000/json/ — aqui, '01001000' é o CEP que queremos consultar. O método HTTP é GET, pois queremos obter dados.

Mini caso: Suponha que você queira saber o endereço de um CEP. Você chama a API ViaCEP no endpoint com o CEP desejado. Se o CEP existir, o servidor responde com status 200 e o JSON com o endereço. Se não existir, pode retornar 404, indicando que o recurso não foi encontrado.

Casos de uso comuns:Consultar dados públicos como CEPs, clima, ou informações de usuários.Integrar sistemas internos com serviços externos.Automatizar consultas e atualizações de dados.Construir aplicações que dependem de dados em tempo real.
Erros comuns para evitar:
  • Confundir endpoint de API com página web comum.
  • Ignorar a importância dos parâmetros na URL e seu formato.
  • Não verificar o status code antes de processar a resposta.
Checkpoint de compreensão:
  • Você sabe o que é um endpoint e para que serve?
  • Consegue explicar a função dos métodos HTTP?
  • Sabe identificar parâmetros na URL e seu papel?

Resumo chave: API é um contrato claro entre quem pede e quem responde. Endpoints são URLs que representam recursos. Métodos HTTP indicam a ação (GET, POST, etc). Parâmetros e headers personalizam a requisição. Status codes indicam sucesso ou erro.

Métodos HTTP principais: foco no GET para consumo de dados

Os métodos HTTP são comandos que indicam a ação que queremos realizar no servidor. Os principais são GET, POST, PUT, DELETE. Para consumo de dados, o método GET é o mais usado, pois solicita informações sem alterar nada no servidor.

GET envia parâmetros na URL, geralmente após o sinal de interrogação (?), chamados query parameters. Por exemplo: https://api.agify.io?name=claudia — aqui, 'name=claudia' é o parâmetro que indica o nome para o qual queremos estimar a idade. O servidor responde com um JSON contendo a informação solicitada.

Exemplo real: Requisição GET para Agify: https://api.agify.io?name=claudia. Resposta JSON: {"name":"claudia","age":45,"count":1234}.

Mini caso: Você quer saber a idade média estimada para o nome 'Claudia'. Faz uma requisição GET para a API Agify com o parâmetro 'name=claudia'. Recebe um JSON com a idade estimada e o número de registros usados para essa estimativa.

Casos de uso comuns:Buscar informações públicas como dados de usuários, endereços, previsões.Testar APIs para entender os dados que retornam.Construir consultas dinâmicas alterando parâmetros na URL.
Erros comuns para evitar:
  • Enviar parâmetros no corpo da requisição GET (não funciona).
  • Esquecer o '?' antes dos parâmetros na URL.
  • Não codificar caracteres especiais nos parâmetros.
Checkpoint de compreensão:
  • Você sabe montar uma URL com query parameters?
  • Consegue identificar a diferença entre método GET e POST?
  • Sabe interpretar a resposta JSON de uma requisição GET?

Resumo chave: GET é usado para obter dados sem alterar o servidor. Query parameters são enviados na URL após '?' e separados por '&'. A resposta geralmente vem em JSON para fácil interpretação.

Status codes HTTP mais comuns e seu significado

Status codes são números que indicam o resultado da requisição HTTP. Eles ajudam a entender se a chamada foi bem-sucedida ou se houve algum problema.

Os códigos mais comuns são: 200 (OK) — requisição bem-sucedida; 404 (Not Found) — recurso não encontrado; 401 (Unauthorized) — acesso não autorizado. Outros códigos importantes são 400 (Bad Request), 500 (Erro interno do servidor). Sempre verifique o status code antes de processar a resposta para evitar erros.

Exemplo real: Ao consultar um CEP válido na ViaCEP, você recebe status 200 e o JSON com o endereço. Se consultar um CEP inexistente, pode receber status 404, indicando que o recurso não foi encontrado.

Mini caso: Você faz uma requisição para um endpoint que não existe. O servidor responde com status 404. Seu programa deve interpretar isso e tratar o erro, por exemplo, avisando que o dado não está disponível.

Casos de uso comuns:Tratar erros comuns para melhorar a experiência do usuário.Implementar lógica condicional baseada no status code.Detectar problemas de autenticação ou endpoint incorreto.
Erros comuns para evitar:
  • Ignorar o status code e tentar processar a resposta mesmo com erro.
  • Confundir status 404 com erro de conexão.
  • Não tratar exceções quando o servidor não responde.
Checkpoint de compreensão:
  • Você sabe o que significa status 200, 404 e 401?
  • Consegue implementar verificação de status code em Python?
  • Sabe diferenciar erro de recurso não encontrado e erro de autenticação?

Resumo chave: Status code 200 indica sucesso. Status code 404 indica recurso não encontrado. Status code 401 indica falta de autorização. Sempre verifique o status code antes de usar os dados.

Formato JSON: estrutura, tipos de dados e interpretação

JSON (JavaScript Object Notation) é um formato leve e fácil de ler para troca de dados. Ele representa dados em pares chave-valor, arrays e tipos básicos como strings, números, booleanos e null.

Um objeto JSON é delimitado por chaves { } e contém pares chave:valor. Arrays são listas delimitadas por colchetes [ ]. Exemplos de tipos: string ("texto"), número (123), booleano (true/false), null (valor nulo). Entender a estrutura JSON é essencial para extrair as informações corretas da resposta da API.

Exemplo real: Resposta JSON da ViaCEP: {"cep":"01001-000","logradouro":"Praça da Sé","bairro":"Sé","localidade":"São Paulo","uf":"SP"}. Aqui, cada campo é uma chave com seu valor correspondente.

Mini caso: Você recebe um JSON com dados do endereço. Para mostrar o logradouro, acessa a chave 'logradouro'. Se tentar acessar uma chave que não existe, pode ocorrer erro, então é importante tratar isso no código.

Casos de uso comuns:Extrair informações específicas de respostas de API.Converter JSON para dicionários Python para manipulação.Validar estrutura dos dados recebidos.
Erros comuns para evitar:
  • Interpretar JSON como texto simples sem parsear.
  • Acessar campos que podem não existir sem tratamento.
  • Confundir arrays e objetos JSON.
Checkpoint de compreensão:
  • Você sabe identificar objetos e arrays em JSON?
  • Consegue converter JSON em dicionário Python?
  • Sabe como acessar valores dentro do JSON com segurança?

Resumo chave: JSON é um formato padrão para troca de dados. Dados são organizados em objetos (chave-valor) e arrays. Tipos básicos incluem string, número, booleano e null. É preciso parsear (converter) JSON para objetos Python.

Usando a biblioteca requests para chamadas HTTP em Python

A biblioteca requests é a forma mais simples e popular para fazer requisições HTTP em Python. Ela permite enviar requisições GET, POST, entre outras, e receber respostas facilmente.

Para fazer uma requisição GET, basta usar requests.get(url). O objeto resposta tem atributos como status_code e método json() para converter o corpo em dicionário Python. Também é possível passar parâmetros via parâmetro params, que monta a URL automaticamente com query parameters.

Exemplo real: Exemplo básico: import requests response = requests.get('https://viacep.com.br/ws/01001000/json/') print(response.status_code) data = response.json() print(data['logradouro'])

Mini caso: Você quer consultar um CEP e imprimir o logradouro. Faz a requisição, verifica se status_code é 200, então acessa o JSON e imprime o campo desejado. Se o status não for 200, imprime uma mensagem de erro.

Casos de uso comuns:Consumir APIs REST para obter dados externos.Automatizar consultas e integrações.Tratar respostas e erros de forma clara.
Erros comuns para evitar:
  • Não verificar status_code antes de usar response.json().
  • Ignorar exceções como timeout ou conexão falha.
  • Montar URLs manualmente sem usar params.
Checkpoint de compreensão:
  • Você sabe fazer uma requisição GET com requests?
  • Consegue acessar status_code e dados JSON da resposta?
  • Sabe passar parâmetros usando params?

Resumo chave: requests simplifica chamadas HTTP em Python. Use response.status_code para verificar sucesso. Use response.json() para obter dados em formato Python. Parâmetros podem ser passados via params para GET.

Tratamento básico de erros e exceções na chamada de API

Ao chamar APIs, erros podem acontecer: o servidor pode não responder, o recurso pode não existir, ou a conexão pode falhar. É fundamental tratar essas situações para que seu programa não quebre.

Use try-except para capturar exceções como requests.exceptions.RequestException. Verifique o status_code para identificar erros como 404 ou 401 e trate-os adequadamente, por exemplo, exibindo mensagens amigáveis ou tentando outra ação. Nunca acesse campos JSON sem garantir que a resposta foi bem-sucedida.

Exemplo real: try: response = requests.get(url) response.raise_for_status() # levanta erro para códigos 4xx e 5xx data = response.json() except requests.exceptions.HTTPError as e: print(f'Erro HTTP: {e}') except requests.exceptions.RequestException as e: print(f'Erro na requisição: {e}')

Mini caso: Você faz uma requisição para um CEP inválido. O servidor retorna 404. Seu código detecta o erro e informa que o CEP não foi encontrado, evitando que o programa tente acessar dados inexistentes.

Casos de uso comuns:Construir aplicações robustas que lidam com falhas.Melhorar a experiência do usuário com mensagens úteis.Garantir que dados inválidos não causem erros no programa.
Erros comuns para evitar:
  • Não usar try-except e deixar o programa quebrar.
  • Ignorar status_code e processar respostas inválidas.
  • Não informar o usuário sobre erros ocorridos.
Checkpoint de compreensão:
  • Você sabe implementar tratamento básico de exceções?
  • Consegue diferenciar erros HTTP de erros de conexão?
  • Sabe como informar erros para o usuário final?

Resumo chave: Trate exceções para evitar crashes. Verifique status_code antes de usar dados. Use mensagens claras para informar erros. Nunca assuma que a resposta é sempre válida.

Prática mão na massa

Nada substitui digitar os comandos você mesma. Siga os passos e verifique o resultado esperado.

Explorando a teoria dos componentes de uma requisição HTTP e resposta JSON

40 min · easy

Estude os slides e exemplos fornecidos que detalham endpoint, método HTTP, parâmetros, status code e corpo JSON. Anote o que cada parte representa e como se relacionam.

Caso do mundo real: Entender o funcionamento básico de APIs públicas como ViaCEP e Agify.

  1. Leia os slides com atenção, focando em cada componente da requisição e resposta.
  2. Analise exemplos reais de URLs com parâmetros.
  3. Observe exemplos de status codes e suas interpretações.
  4. Identifique os tipos de dados presentes no JSON.
  5. Faça anotações pessoais para fixar o conteúdo.

Resultado esperado: Compreensão clara dos elementos que compõem uma chamada HTTP e resposta JSON.

Dicas e macetes
  • Pense na analogia do restaurante para cada componente.
  • Relacione parâmetros na URL com filtros ou escolhas.
  • Lembre-se que status code indica se deu certo ou não.

Desafio extra para ir além: Pesquise outros métodos HTTP além do GET e anote suas funções.

Demonstração prática: chamada à API ViaCEP usando Python requests

30 min · medium

Siga o passo a passo para montar a URL, enviar a requisição GET, verificar o status code e interpretar o JSON retornado para extrair dados do endereço.

Caso do mundo real: Consulta de endereço para preenchimento automático em formulários.

  1. Abra seu editor Python e importe requests.
  2. Defina a variável com o CEP desejado, ex: '01001000'.
  3. Monte a URL concatenando o CEP na estrutura 'https://viacep.com.br/ws/{cep}/json/'.
  4. Use requests.get para enviar a requisição.
  5. Cheque o status_code para garantir que é 200.
  6. Use response.json() para obter o dicionário Python.
  7. Extraia e imprima campos como logradouro, bairro, localidade e uf.

Resultado esperado: Impressão dos dados do endereço correspondente ao CEP informado.

Dicas e macetes
  • Verifique se a URL está correta antes de enviar a requisição.
  • Sempre cheque o status_code antes de acessar o JSON.
  • Use print para visualizar o JSON completo se tiver dúvidas.

Desafio extra para ir além: Modifique o código para tratar CEPs inválidos e mostrar mensagem de erro.

Exercício guiado: chamadas à API Agify com diferentes nomes

50 min · medium

Faça requisições GET para a API Agify com nomes variados, observe os parâmetros usados, anote o status code e os campos principais da resposta. Registre hipóteses para possíveis erros.

Caso do mundo real: Aplicações que estimam dados demográficos para personalização.

  1. Escolha pelo menos 5 nomes diferentes para consultar.
  2. Monte a URL com o parâmetro name para cada nome, ex: 'https://api.agify.io?name=claudia'.
  3. Use requests.get para enviar as requisições.
  4. Anote o status_code de cada resposta.
  5. Extraia os campos name, age e count do JSON.
  6. Registre possíveis erros, como nomes inválidos ou ausência de dados.
  7. Tente enviar uma requisição sem parâmetro name e observe a resposta.

Resultado esperado: Tabela ou lista com nomes, status codes, idades estimadas e contagem de registros, além de hipóteses sobre erros.

Dicas e macetes
  • Use um loop para automatizar as chamadas se quiser.
  • Verifique se o parâmetro name está correto e codificado.
  • Observe o que acontece quando o parâmetro está ausente.

Desafio extra para ir além: Implemente tratamento para status codes diferentes de 200 e exiba mensagens apropriadas.

Prática livre: explorando a API JSONPlaceholder no navegador

30 min · easy

Use seu navegador para acessar URLs da API JSONPlaceholder, observe a estrutura da URL, os parâmetros possíveis e a resposta JSON. Anote dúvidas, padrões e insights.

Caso do mundo real: Familiarização com APIs REST para desenvolvimento e testes.

  1. Acesse a URL https://jsonplaceholder.typicode.com/posts/1 no navegador.
  2. Observe o JSON retornado e identifique os campos.
  3. Experimente alterar o número no final da URL para outros valores.
  4. Pesquise na documentação da API JSONPlaceholder sobre outros endpoints.
  5. Anote o que muda na resposta ao alterar a URL e parâmetros.
  6. Registre dúvidas ou padrões que perceber.

Resultado esperado: Anotações sobre a estrutura da API, parâmetros, respostas e dúvidas para discussão futura.

Dicas e macetes
  • Lembre-se que o número no final indica o id do recurso.
  • Tente acessar um id que não existe para ver o que acontece.
  • Use o console do navegador para visualizar melhor o JSON.

Desafio extra para ir além: Use curl ou outra ferramenta para fazer requisições similares e comparar resultados.

Vídeoaula e Apoio Visual

Vídeo Relevante Encontrado

Para fixar os conceitos e ver a tecnologia em ação, assista a este vídeo selecionado especificamente para o assunto da nossa aula.

🔍 Curadoria Inteligente

Buscamos automaticamente no YouTube por materiais práticos que apoiam o tema de hoje.

Termo pesquisado: Tutorial APIs REST python

💡 Dica de estudo: Pause o vídeo nos pontos cruciais e compare com os blocos de teoria e prática que fizemos nos passos anteriores!

Quiz de checagem

Responda às questões e revele as explicações detalhadas para testar sua compreensão imediata.

O que é um endpoint em uma API REST?

  1. Uma página web comum acessada pelo navegador
  2. Uma URL que representa um recurso ou serviço específico
  3. Um método HTTP usado para enviar dados
  4. Um tipo de dado JSON
Ver resposta correta e explicação

Resposta correta: Opção 2

Endpoint é a URL que identifica um recurso ou serviço na API, onde a requisição é feita.

Qual método HTTP é mais usado para obter dados de uma API sem alterar nada no servidor?

  1. POST
  2. GET
  3. PUT
  4. DELETE
Ver resposta correta e explicação

Resposta correta: Opção 2

GET é o método usado para solicitar dados sem modificar o servidor.

O que significa o status code HTTP 404?

  1. Requisição bem-sucedida
  2. Recurso não encontrado
  3. Erro interno do servidor
  4. Acesso não autorizado
Ver resposta correta e explicação

Resposta correta: Opção 2

404 indica que o recurso solicitado não foi encontrado no servidor.

Como os parâmetros são enviados em uma requisição GET?

  1. No corpo da requisição
  2. Na URL após o sinal de interrogação '?'
  3. Nos headers da requisição
  4. No status code
Ver resposta correta e explicação

Resposta correta: Opção 2

Parâmetros em GET são enviados na URL após o '?', chamados query parameters.

Por que é importante verificar o status code antes de processar a resposta JSON?

  1. Para garantir que o JSON está no formato correto
  2. Para evitar erros ao acessar dados que podem não existir
  3. Para acelerar a requisição
  4. Para modificar os parâmetros da URL
Ver resposta correta e explicação

Resposta correta: Opção 2

Verificar o status code garante que a resposta foi bem-sucedida antes de acessar os dados, evitando erros.

Perguntas abertas

Reflita sobre essas perguntas para treinar sua capacidade de explicar a tecnologia com suas palavras:

  • Como você explicaria a função dos parâmetros na URL para alguém que nunca viu uma API?
  • Quais cuidados você deve ter ao acessar campos dentro de um JSON retornado por uma API?
  • Como o tratamento de erros melhora a experiência do usuário em aplicações que consomem APIs?
  • De que forma a analogia do restaurante ajuda a entender o funcionamento das APIs?
  • Quais diferenças você percebe entre uma página web comum e um endpoint de API?
  • Como você aplicaria o conhecimento de chamadas HTTP em Python para um projeto pessoal?

Autoavaliação

Você deve se sentir confortável com os seguintes tópicos antes de dar a aula por concluída:

  • Consigo montar uma requisição HTTP GET em Python para uma API pública.
  • Sei interpretar corretamente o status code e o corpo JSON da resposta.
  • Sei identificar e tratar erros básicos como 404 e exceções de conexão.
  • Consigo explicar a função dos parâmetros na URL e como modificá-los para obter diferentes dados.
  • Posso aplicar o conhecimento para consultar APIs reais e extrair informações úteis.

Fechamento

Feedback rápido

Use este espaço depois de estudar. Seu comentário entra no contexto da próxima aula.