⚡ Шпаргалка: самое важное
import requests
resp = requests.get(url) # GET
resp = requests.post(url, json=data) # POST с JSON-телом
resp = requests.patch(url + "?token=X", json=data) # PATCH
resp = requests.delete(url + "?token=X") # DELETE
resp.status_code # int: 200, 201, 404…
resp.json() # dict или list
resp.text # str (сырой текст)
resp.headers # dict заголовков
assert resp.status_code == 200
assert resp.json()["name"] == "expected"
Методы библиотеки requests
| Метод | HTTP-метод | Основные параметры | Назначение |
requests.get(url, params=None, headers=None) | GET | params — query-параметры dict | Получение данных |
requests.post(url, json=None, data=None, headers=None) | POST | json — тело как dict (автоматически сериализуется) | Создание ресурса |
requests.put(url, json=None, headers=None) | PUT | json — полная замена ресурса | Полное обновление |
requests.patch(url, json=None, headers=None) | PATCH | json — только изменяемые поля | Частичное обновление |
requests.delete(url, headers=None) | DELETE | Тело обычно пустое | Удаление ресурса |
Объект Response — атрибуты и методы
| Атрибут / Метод | Тип | Описание |
resp.status_code | int | HTTP-статус ответа: 200, 201, 400, 404, 500… |
resp.ok | bool | True если status_code < 400 |
resp.json() | dict или list | Парсит JSON в Python-объект; вызывает JSONDecodeError если ответ не JSON |
resp.text | str | Тело ответа как строка (всегда, даже если JSON) |
resp.content | bytes | Тело ответа как байты (для файлов, изображений) |
resp.headers | dict | Заголовки ответа: Content-Type, Authorization… |
resp.url | str | Финальный URL (после редиректов) |
resp.elapsed | timedelta | Время выполнения запроса |
resp.raise_for_status() | — | Вызывает HTTPError если status_code >= 400 |
HTTP-методы и статус-коды
| Метод | Ожидаемый статус | REST-путь (пример) |
| GET (список) | 200 OK | GET /company/list |
| GET (по ID) | 200 OK / 404 Not Found | GET /company/{id} |
| POST (создание) | 201 Created | POST /company/create |
| POST (авторизация) | 200 OK | POST /auth/login |
| PATCH (обновление) | 200 OK | PATCH /company/update/{id} |
| DELETE | 200 OK / 204 No Content | DELETE /company/{id} |
Установка и проверка requests
# PowerShell (Windows)
pip install requests
pip show requests
pip install requests==2.31.0
pip install --upgrade requests
Передача данных в запросе
| Параметр | Когда использовать | Пример |
json=dict | Тело запроса в JSON (автоматически ставит Content-Type: application/json) | requests.post(url, json={"name": "test"}) |
params=dict | Query-параметры в URL (?key=value) | requests.get(url, params={"is_active": True}) |
headers=dict | Дополнительные заголовки (токен, Accept) | requests.get(url, headers={"x-client-token": token}) |
data=dict | Тело как form-data (устаревший способ для JSON) | Избегать для JSON — используй json= |
Модуль json: полезные функции
| Функция | Что делает |
json.loads(string) | Строка JSON → Python dict/list |
json.dumps(obj) | Python dict/list → строка JSON |
json.load(file) | Читает JSON из файла → Python объект |
json.dump(obj, file) | Записывает Python объект в JSON-файл |
Методы CompanyApi (из лекции)
| Метод | HTTP-запрос | Возвращает |
get_company_list() | GET /company/list | list[dict] |
get_token(user, password) | POST /auth/login | str (токен) |
create_company(name, description) | POST /company/create | dict (новая компания) |
get_company(company_id) | GET /company/{id} | dict |
edit_company(id, name, descr) | PATCH /company/update/{id} | dict |
delete_company(company_id) | DELETE /company/{id} | dict |
set_active_state(id, is_active) | PATCH /company/status_update/{id} | dict |