Capítulo 1.2: Métodos HTTP e Códigos de Status
Tempo de estudo: 40 minutos
1. HTTP: A Linguagem de Comunicação no Espaço
Imagine que você é o Centro de Controle da Missão (MCC) e o servidor da API é uma nave espacial. HTTP (HyperText Transfer Protocol) é a comunicação por rádio entre vocês.
Cada mensagem contém:
-
Método → O que fazer (por exemplo, "enviar uma sonda")
-
Código de Status → O resultado da operação ("sonda lançada com sucesso!")
💡 Analogia Espacial:
GET /stars
= "MCC → Nave: Dê-me as coordenadas das estrelas!"200 OK
= "Nave → MCC: Coordenadas transmitidas!"
2. Métodos HTTP Principais
Cada método é como um tipo de comando para uma missão espacial:
Método | Análogo no Espaço | Exemplo de Solicitação | Descrição |
---|---|---|---|
GET | Solicitação de dados (telescópio) | GET /planets |
Obter uma lista de planetas |
POST | Envio de um novo objeto (lançamento de foguete) | POST /satellites |
Criar um novo satélite |
PUT | Atualização completa de um objeto (correção de órbita) | PUT /satellites/iss |
Atualizar dados da ISS |
DELETE | Destruição de um objeto (saída de órbita) | DELETE /debris/123 |
Excluir lixo espacial |
⚡ Exemplo de Código (Python):
import requests
# GET: Obter dados do foguete Falcon 9
# Usamos um endpoint real da API SpaceX
response = requests.get("https://api.spacexdata.com/v4/rockets/5e9d0d95eda69973a809d1ec")
print(response.status_code, response.json()['name']) # 200 Falcon 9
# POST: Criar uma nova postagem em uma API de teste
# Usamos o serviço sandbox jsonplaceholder
new_post = {"title": "Artemis Mission", "body": "Ready for launch", "userId": 1}
response = requests.post("https://jsonplaceholder.typicode.com/posts", json=new_post)
print(response.status_code, response.json()['id']) # 201 101 (ou outro ID)
3. Códigos de Status Importantes
A resposta do servidor é como um sinal da nave espacial:
Grupo | Código | Análogo no Espaço | Descrição |
---|---|---|---|
2xx |
200 | ✅ "Tarefa concluída!" | Sucesso |
201 | 🚀 "Foguete lançado!" | Objeto criado | |
3xx |
301 | 🌍 "MCC movido para um novo endereço" | Redirecionamento |
4xx |
400 | ❌ "Coordenadas incorretas na solicitação!" | Erro do cliente |
404 | 🪐 "Planeta não encontrado!" | Recurso não existe | |
5xx |
500 | 🔥 "Falha no sistema de propulsão!" | Erro do servidor |
4. Prática: Tratamento de Códigos de Status
Sempre verifique a resposta da API! Exemplo de tratamento de erros:
import requests
def get_post_data(post_id):
"""Função para obter dados de postagem com tratamento de códigos de status."""
try:
response = requests.get(f"https://jsonplaceholder.typicode.com/posts/{post_id}")
# Verifica o código de status da resposta
if response.status_code == 200:
print(f"✅ Dados para a postagem {post_id} recebidos com sucesso!")
return response.json()
elif response.status_code == 404:
print(f"⚠️ Recurso para a postagem {post_id} não encontrado!")
return None
else:
# Tratamento de outros erros do cliente (4xx) ou do servidor (5xx)
print(f"🚨 Ocorreu um erro! Código de status: {response.status_code}")
return None
except requests.exceptions.RequestException as e:
# Tratamento de erros de conexão (por exemplo, sem internet)
print(f"🔥 Erro de conexão: {e}")
return None
# --- Testamos nossa função ---
print("--- Buscando postagem existente ---")
get_post_data(1)
print("\n--- Buscando postagem inexistente ---")
get_post_data(9999) # Esta postagem não existe, esperamos 404
🔭 Exemplo de uma API real (SpaceX): Solicitação:
GET https://api.spacexdata.com/v4/ships/OCISLY
Resposta:200 OK
+ dados da nave Solicitação:GET https://api.spacexdata.com/v4/ships/UNICORN
Resposta:404 Not Found
Quiz para fixação
🚀 Resumo do Capítulo: Métodos HTTP são seus comandos para missões espaciais, e códigos de status são os relatórios de sua execução. Lembre-se:
GET
= "Dê-me dados",POST
= "Crie algo novo",PUT
= "Atualize tudo",DELETE
= "Destrua"2xx
= Sucesso,4xx
= Seu erro,5xx
= Problema no servidor
Prepare-se para o lançamento! No próximo capítulo, decifraremos as "telecomunicações" do servidor – o formato JSON.
📌 Prática: Use a SpaceX API para enviar um
GET /launches/latest
e estudar os códigos de resposta!