HTTP и REST API для Python-разработчика

Хотите понять, как Python получает данные от сайтов и сервисов, отправляет их обратно и работает с API? На курсе будем разбираться с этим на практике: отправлять HTTP-запросы через requests, работать с JSON, параметрами и заголовками, передавать данные серверу и правильно обрабатывать ошибки.
Начальный уровень
3-5 часов в неделю
Сертификат Stepik

Чему вы научитесь

  • Отправлять 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-запросы и формирует ответы.

Для кого этот курс

  • тем, кто уже знаком с основами Python и хочет понять, как программа общается с API по HTTP;
  • тем, кто встречает GET, POST, status code, headers, JSON и REST, но пока не складывает всё это в одну понятную картину;
  • тем, кто хочет научиться получать и отправлять данные через API с помощью библиотеки requests;
  • тем, кто собирается дальше изучать backend-разработку и хочет сначала разобраться, что происходит между клиентом и сервером.
  • Если Python пока знаком совсем немного, можно сначала пройти мой курс «PROкод: курс по Python для начинающих». А если основы уже знакомы, но хочется увереннее чувствовать себя с функциями, коллекциями, обработкой ошибок и JSON, можно заглянуть на «PROкод: продвинутый курс по Python». Но проходить оба курса перед этим не обязательно. Для старта здесь достаточно базовых знаний Python и умения запускать небольшие программы.

    Начальные требования

    Для прохождения курса достаточно базовых знаний 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 интерактивных задач
    загружаем...

    Наши преподаватели

    Certificate

    Сертификат

    Сертификат Stepik

    Отзывы прошедших курс

    5
    из 5
    из 2 отзывов
    2 отзыва
    загружаем...

    Что вы получаете

    • практический опыт работы с настоящими HTTP-запросами через requests;
    • понимание того, как читать URL, status code, JSON, заголовки и ошибки сервера;
    • опыт работы с GET, POST, PATCH, PUT и DELETE;
    • практику с query-параметрами, авторизацией, Session, timeout и исключениями;
    • один учебный BookShelf API, на котором можно повторять примеры и после прохождения уроков;
    • понимание разницы между HTTP API и REST без упрощённого "REST = несколько HTTP-методов";
    • основу, с которой уже гораздо проще переходить к изучению backend-разработки и созданию собственных API.

    Сколько стоит обучение

    Бесплатно

    Расскажите о курсе друзьям

    Бесплатно