Каковы основные HTTP-методы и их семантическое назначение

Ответ

HTTP-методы (или "глаголы") указывают на желаемое действие, которое должно быть выполнено для указанного ресурса. Они определяют семантику клиентского запроса.

Основные методы:

  • GET: Запрашивает представление ресурса. Не должен изменять состояние сервера. Является безопасным и идемпотентным.
  • POST: Отправляет данные на сервер для создания нового ресурса (например, отправка формы). Не является идемпотентным.
  • PUT: Полностью заменяет существующий ресурс данными из тела запроса. Если ресурс не существует, может его создать. Является идемпотентным.
  • PATCH: Вносит частичные изменения в ресурс. Не является идемпотентным по умолчанию, но может быть реализован как таковой.
  • DELETE: Удаляет указанный ресурс. Является идемпотентным.

Важные концепции:

  • Идемпотентность: Повторное выполнение одного и того же запроса приводит к тому же результату, что и одиночный запрос (например, многократный DELETE /users/1 удалит пользователя один раз).
  • Безопасность: Метод не изменяет состояние сервера (например, GET, HEAD, OPTIONS).

Пример использования с библиотекой requests в Python:

import requests

# Получение данных
response_get = requests.get('https://api.example.com/items/1')
print(f"GET status: {response_get.status_code}, data: {response_get.json()}")

# Создание нового ресурса
new_item = {'name': 'New Item', 'price': 100}
response_post = requests.post('https://api.example.com/items', json=new_item)
print(f"POST status: {response_post.status_code}") # Ожидается 201 Created

# Удаление ресурса
response_delete = requests.delete('https://api.example.com/items/1')
print(f"DELETE status: {response_delete.status_code}") # Ожидается 200 OK или 204 No Content