📝 API

HTTP-методы: GET, POST, PATCH, PUT, DELETE

0
Автор
04e5cc8b-58ac-4bdc-bdee-661bbb
📅
Опубликовано
08.05.2026
⏱️
Время чтения
2 мин
👁️
Просмотров
41
🌱
Уровень
Начальный
🐦 💼 ✈️

В прошлых уроках мы всегда использовали GET-запросы — просили данные у сервера. Но HTTP поддерживает и другие методы для создания, обновления и удаления данных.

Пять основных методов

GET — получить данные

Самый частый метод. Данные передаются только в URL, тело запроса пустое.

import requests

# Получить список репозиториев
response = requests.get("https://api.github.com/user/repos", headers=headers)

Когда использовать: чтение, поиск, фильтрация — любое получение данных без изменений.


POST — создать ресурс

Создаёт новый объект. Данные передаются в теле запроса (request body) в формате JSON.

# Создать репозиторий
response = requests.post(
    "https://api.github.com/user/repos",
    headers=headers,
    json={"name": "my-new-repo", "private": False}  # ← тело запроса
)
# Успешный ответ: 201 Created

Когда использовать: создание нового пользователя, репозитория, issue, заказа.


PUT — заменить ресурс целиком

Заменяет объект полностью. Нужно передать все поля даже те которые не меняются.

# Обновить весь профиль пользователя
response = requests.put(
    "https://api.example.com/users/42",
    json={"name": "Артём", "email": "artem@example.com", "city": "Moscow"}
)

Когда использовать: полная замена объекта.


PATCH — изменить частично

Обновляет только переданные поля, остальные не трогает.

# Закрыть issue (изменить только поле state)
response = requests.patch(
    "https://api.github.com/repos/user/repo/issues/5",
    headers=headers,
    json={"state": "closed"}  # ← только изменяемое поле
)

Когда использовать: частичное обновление (изменить статус, одно поле).


DELETE — удалить ресурс

Удаляет объект. Тело запроса обычно пустое, успешный ответ — 204 No Content.

# Удалить репозиторий
response = requests.delete(
    "https://api.github.com/repos/user/old-repo",
    headers=headers
)
# Успешный ответ: 204 No Content

Когда использовать: удаление объектов.

Главное отличие GET от остальных

GET POST / PUT / PATCH / DELETE
Данные В URL (?key=val) В теле запроса (json={})
Кэшируется Да Нет
Idempotent Да POST — нет; PUT/DELETE — да
В браузере Адресная строка Только через код / форму

Idempotent — одинаковый результат при повторном вызове. GET список репозиториев пять раз — тот же список. POST «создать репо» пять раз — пять разных репозиториев (или ошибки дубликата).

params= vs json= в requests

# GET — данные в URL через params=
requests.get(url, params={"q": "python", "per_page": 10})
# Итоговый URL: url?q=python&per_page=10

# POST — данные в теле через json=
requests.post(url, json={"name": "my-repo", "private": True})
# URL без параметров, тело: {"name": "my-repo", "private": true}

json= автоматически:
- Сериализует словарь в JSON-строку
- Добавляет заголовок Content-Type: application/json

Статус-коды по методам

Метод Успешный код
GET 200 OK
POST 201 Created
PUT / PATCH 200 OK
DELETE 204 No Content

CRUD — стандартный паттерн

REST API строится по принципу CRUD (Create, Read, Update, Delete):

CRUD HTTP-метод Пример
Create POST Создать issue
Read GET Получить список issues
Update PUT / PATCH Закрыть issue
Delete DELETE Удалить issue

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

API-ключи: что это и как с ними работать

Большинство публичных API требуют API-ключ — уникальную строку символов, которая идентифицирует тебя как пользователя сервиса.

📅 08.05.2026 👁️ 60
📝

Библиотека requests: HTTP-запросы из Python

requests — самая популярная Python-библиотека в мире. Более 300 миллионов загрузок в месяц. Она делает...

📅 08.05.2026 👁️ 45
📝

Как читать API-документацию

Документация API — главный инструмент разработчика. Умение её читать важнее, чем знать конкретный API наизусть:...

📅 08.05.2026 👁️ 48

Понравилась статья?

Подпишитесь на наши обновления и получайте новые статьи первыми. Развивайтесь вместе с PyLand!