Чему вы научитесь
- Отправлять HTTP-запросы из Python с помощью библиотеки requests
- Работать с URL, endpoint'ами и query-параметрами
- Читать status code, JSON, обычный текст и HTTP-заголовки ответа
- Получать, создавать, изменять и удалять ресурсы через HTTP API
- Передавать данные и заголовки в запросах, работать с Content-Type и Accept
- Использовать Authorization и requests.Session при работе с API
- Отличать HTTP-ответы 4xx/5xx от сетевых ошибок и обрабатывать timeout и исключения Requests
- Использовать raise_for_status() и строить более надёжный код для работы с API
- Понимать, как связаны HTTP API и REST и в чём между ними разница
- Соединять несколько запросов в один последовательный сценарий работы с API
О курсе
Что на самом деле происходит после requests.get()?
Представьте обычную ситуацию. Вы нашли API, открыли документацию и видите что-то вроде:
GET /books
POST /books
PATCH /books/7
DELETE /books/7
Отдельные части вроде знакомы. Но как превратить всё это в работающий Python-код? Куда уходит запрос? Что именно возвращает сервер? Почему один запрос заканчивается 200, другой – 404, а иногда вместо ответа вообще возникает исключение?
Вот с этим мы и будем разбираться.
Начнём с самого простого запроса
Сначала отправим обычный GET-запрос через библиотеку requests и посмотрим, что получили обратно.
А затем начнём разбирать этот пример по частям. Выясним, что такое URL и endpoint, куда попадают query-параметры, зачем сервер возвращает status code и где в ответе находятся тело и HTTP-заголовки.
То есть сначала увидим результат, а уже потом разберёмся, почему получилось именно так.
Потом начнём менять данные
Одного GET довольно быстро становится мало. Иногда нужно не только получить ресурс, но и создать новый, изменить существующий или удалить его.
Поэтому дальше появятся:
POST– передадим данные серверу и создадим новый ресурс;PATCH– изменим существующий ресурс;PUT– сравним его поведение с PATCH на конкретном API;DELETE– удалим ресурс и посмотрим, что произойдёт при повторном запросе.
Параллельно разберём Content-Type, Accept, Authorization и работу с requests.Session.
А если запрос пошёл не по плану?
Такое тоже обязательно случится.
Сервер может вернуть 404 или 500. Соединение может вообще не установиться. Сервер может отвечать слишком долго. А Python-код в этих ситуациях должен вести себя предсказуемо.
Поэтому отдельно разберём:
- HTTP-ответы
4xxи5xx; - сетевые ошибки;
timeout;- исключения библиотеки Requests;
raise_for_status().
Здесь особенно хорошо видно, что HTTP-ошибка и сетевая ошибка – не одно и то же.
Один учебный API на протяжении курса
Чтобы не менять данные и адреса от урока к уроку, основные примеры связаны с одним учебным сервисом – BookShelf API.
Мы будем получать книги, искать их, создавать новые, изменять и удалять.
При этом сервер пока останется для нас "чёрным ящиком". Мы не будем создавать backend и разбирать его внутреннюю реализацию. Наша задача здесь другая: научиться правильно обращаться к уже существующему API и понимать его ответы.
Что будет в финале
К этому моменту GET, POST, PATCH и DELETE уже не будут отдельными примерами. Мы соединим знакомые действия в один сценарий:
получить список
→ выполнить поиск
→ создать ресурс
→ изменить его
→ запросить снова
→ удалить
→ проверить результат
Новых механизмов здесь уже не понадобится. Наоборот, станет видно, как отдельные HTTP-запросы начинают работать вместе в обычной Python-программе.
И где здесь REST?
К REST мы вернёмся ближе к концу курса. К этому времени у нас уже будут перед глазами ресурсы, URL, HTTP-методы, запросы и ответы.
Так гораздо проще разобраться, какое отношение REST имеет к HTTP API и почему HTTP и REST – всё-таки не одно и то же.
А что, если захочется посмотреть на эту систему с другой стороны?
В этом курсе Python выступает клиентом: отправляет запросы и разбирает ответы сервера.
Если после этого захочется уже самостоятельно создавать API и посмотреть, что происходит по другую сторону запроса, можно продолжить обучение на моём курсе «FastAPI: backend на Python».
Там мы меняемся местами: Python уже не обращается к чужому API, а сам принимает HTTP-запросы и формирует ответы.
Для кого этот курс
GET, POST, status code, headers, JSON и REST, но пока не складывает всё это в одну понятную картину;requests;Начальные требования
Для прохождения курса достаточно базовых знаний Python.
Желательно уметь:
• создавать переменные и работать со строками, списками и словарями;
• использовать условия и функции;
• импортировать модули;
• запускать Python-файлы и выполнять простые команды в терминале.
В примерах курса используется Python 3.12. Код можно писать в PyCharm, VS Code или другой привычной среде разработки.
Знать HTTP, REST, FastAPI, базы данных или устройство backend заранее не нужно – с HTTP начнём с первого запроса.
Библиотеку requests установим вместе в начале курса, поэтому заранее настраивать её тоже не требуется.
Как проходит обучение
Курс состоит из текстовых уроков, вопросов и практических заданий на Python.
Мы начинаем не с определения, а с небольшого эксперимента: отправляем запрос, смотрим на ответ сервера, меняем параметр или специально получаем ошибку. После этого разбираемся, почему сервер повёл себя именно так и что произошло между Python-программой и API.
Для запросов используем библиотеку requests, а основные примеры связаны с одним учебным сервисом – BookShelf API. Свой сервер поднимать не потребуется.
После теории идут вопросы и задачи. Где-то нужно выбрать правильный вариант или сопоставить части HTTP-запроса и ответа, а где-то – написать или исправить небольшой фрагмент Python-кода.
По ходу курса отдельно разберём GET, POST, PATCH, PUT и DELETE, query-параметры, JSON, заголовки, авторизацию, requests.Session, timeout и обработку ошибок.
Цель курса – не запомнить набор терминов, а научиться смотреть на обычный запрос через requests и понимать, что именно отправляется серверу, что пришло обратно и что с этим делать в Python.
Программа курса
В курс входят
- 23 урока
- 96 тестов
- 100 интерактивных задач
Наши преподаватели
Сертификат
Отзывы прошедших курс
Что вы получаете
- практический опыт работы с настоящими HTTP-запросами через requests;
- понимание того, как читать URL, status code, JSON, заголовки и ошибки сервера;
- опыт работы с GET, POST, PATCH, PUT и DELETE;
- практику с query-параметрами, авторизацией, Session, timeout и исключениями;
- один учебный BookShelf API, на котором можно повторять примеры и после прохождения уроков;
- понимание разницы между HTTP API и REST без упрощённого "REST = несколько HTTP-методов";
- основу, с которой уже гораздо проще переходить к изучению backend-разработки и созданию собственных API.