← Назад к вопросам

В каких случаях применяются разные типы http запросов

1.6 Junior🔥 221 комментариев
#REST API и HTTP

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Типы HTTP запросов и их применение

В REST API используются разные HTTP методы (запросы) для выполнения различных операций с ресурсами. Выбор правильного метода критичен для создания предсказуемого и стандартизированного API.

GET запросы

Используется для получения данных без изменения состояния на сервере. GET запросы:

  • Безопасны — не изменяют данные
  • Идемпотентны — повторные вызовы дают одинаковый результат
  • Кэшируются браузерами и прокси
  • Данные передаются в URL параметрах
import requests

# Получить список пользователей
response = requests.get("https://api.example.com/users")
users = response.json()

# Получить пользователя по ID
response = requests.get("https://api.example.com/users/123")
user = response.json()

# С параметрами фильтрации
response = requests.get("https://api.example.com/users", params={"page": 1, "limit": 10})

POST запросы

Используется для создания новых ресурсов на сервере.

  • Не безопасны — изменяют состояние
  • Не идемпотентны — повторные вызовы могут создать несколько ресурсов
  • Данные передаются в теле запроса (JSON, form-data)
import requests
import json

# Создать нового пользователя
data = {"name": "John", "email": "john@example.com"}
response = requests.post("https://api.example.com/users", json=data)
new_user = response.json()
print(f"Создан пользователь с ID: {new_user["id"]}")

# С заголовками
headers = {"Content-Type": "application/json", "Authorization": "Bearer token"}
response = requests.post("https://api.example.com/users", json=data, headers=headers)

PUT запросы

Используется для полного обновления существующего ресурса.

  • Заменяет весь ресурс целиком
  • Идемпотентен — повторные вызовы дают одинаковый результат
  • Требует полное описание ресурса
import requests

# Обновить всего пользователя
data = {"name": "John Updated", "email": "john.new@example.com", "age": 30}
response = requests.put("https://api.example.com/users/123", json=data)
updated_user = response.json()

PATCH запросы

Используется для частичного обновления ресурса.

  • Обновляет только указанные поля
  • Идемпотентен (в большинстве случаев)
  • Экономнее чем PUT
import requests

# Обновить только имя пользователя
data = {"name": "Jane"}
response = requests.patch("https://api.example.com/users/123", json=data)
updated_user = response.json()

DELETE запросы

Используется для удаления ресурсов.

  • Изменяет состояние сервера
  • Идемпотентен — повторное удаление обычно возвращает 204 или 404
import requests

# Удалить пользователя
response = requests.delete("https://api.example.com/users/123")
if response.status_code == 204:
    print("Пользователь удален")

HEAD запросы

Аналогичен GET, но без тела ответа. Используется для проверки существования ресурса и получения метаинформации.

import requests

# Проверить доступность ресурса
response = requests.head("https://api.example.com/users/123")
if response.status_code == 200:
    print("Ресурс существует")

OPTIONS запросы

Используется для получения информации о доступных методах для ресурса. Часто используется в CORS запросах.

import requests

# Получить допустимые методы
response = requests.options("https://api.example.com/users")
allowed_methods = response.headers.get("Allow")
print(f"Допустимые методы: {allowed_methods}")

Таблица сравнения

МетодБезопасенИдемпотентенДля созданияДля обновленияДля удаления
GET
POST
PUT✅ (полное)
PATCH✅ (частичное)
DELETE
HEAD

Правильный выбор HTTP метода делает API предсказуемым, позволяет браузерам и промежуточным сервисам правильно кэшировать данные и обрабатывать ошибки.