Sobes.tech
Junior

Por que usar métodos HTTP ao realizar operações?

sobes.tech IA

Resposta da IA

Os métodos HTTP (GET, POST, PUT, PATCH, DELETE) determinam o tipo de ação realizada sobre um recurso no servidor. Isto garante:

  • Clareza semântica: Cada método indica claramente a intenção do cliente (obter, criar, atualizar, eliminar um recurso).
  • Caching: O método GET é por padrão armazenado em cache, o que melhora o desempenho. Outros métodos que alteram o estado geralmente não são cacheados.
  • Idempotência: Alguns métodos (GET, PUT, DELETE) são idempotentes, ou seja, executar a mesma operação várias vezes produz o mesmo resultado que executá-la uma única vez. Isto é importante para fiabilidade e tentativas repetidas. POST não é idempotente.
  • Segurança: A separação de métodos ajuda a implementar políticas de segurança, limitando o acesso a certas operações.
  • Padronização: O uso de métodos padrão simplifica a interação entre diferentes sistemas e ferramentas.
  • Acompanhamento de erros: Os códigos de estado HTTP (por exemplo, 200 OK, 404 Not Found) são mais informativos no contexto de um método específico, indicando o resultado da requisição.

Exemplo:

import requests

# Obter recurso
response_get = requests.get("https://api.example.com/users/123")
print(f"Estado GET: {response_get.status_code}")

# Criar recurso
data_post = {"name": "John Doe", "email": "john.doe@example.com"}
response_post = requests.post("https://api.example.com/users", json=data_post)
print(f"Estado POST: {response_post.status_code}")

# Atualizar recurso
data_put = {"name": "Jane Doe"}
response_put = requests.put("https://api.example.com/users/123", json=data_put)
print(f"Estado PUT: {response_put.status_code}")

# Atualização parcial do recurso
data_patch = {"email": "jane.doe.updated@example.com"}
response_patch = requests.patch("https://api.example.com/users/123", json=data_patch)
print(f"Estado PATCH: {response_patch.status_code}")

# Eliminar recurso
response_delete = requests.delete("https://api.example.com/users/123")
print(f"Estado DELETE: {response_delete.status_code}")