📝 Python

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

0
Author
04e5cc8b-58ac-4bdc-bdee-661bbb
📅
Published
08.05.2026
⏱️
Reading time
2 min
👁️
Views
20
🌱
Level
Beginner

В прошлых уроках мы всегда использовали 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

Your reaction to the article

💬 Comments (0)

🔐 Sign in to leave a comment
🚪 Login
💭

No comments yet

Be the first to share your opinion about this article!

🔗 Similar

Similar articles

Continue learning with these materials

📝

Модуль datetime: работа с датами и временем

datetime — стандартный модуль Python для работы с датами и временем. Входит в стандартную библиотеку,...

📅 08.05.2026 👁️ 30
📝

.env файлы и переменные окружения: секреты вне ко…

Представь что ты написал программу с API-ключом прямо в коде и залил её на GitHub....

📅 08.05.2026 👁️ 35
📝

Виртуальные окружения в Python: зачем и как

Когда начинаешь второй Python-проект и ставишь pip install requests — эта библиотека устанавливается глобально, для...

📅 08.05.2026 👁️ 31

Did you like the article?

Subscribe to our updates and receive new articles first. Grow with PyLand!