ITED
bootcamp
Лекция 5.3 HTTP API
Концепция и практика: Postman и curl
Сегодня почти любое приложение общается с сервером через API. Даже если пользователь видит кнопку или форму, под капотом почти всегда отправляется HTTP-запрос.
HTTP API - это программный интерфейс, доступный по протоколу HTTP. Клиент обращается к адресу endpoint, передает параметры, а сервер возвращает структурированный ответ.
Рис.: клиент отправляет HTTP-запрос на URL endpoint, сервер возвращает ответ, часто в формате JSON
Когда говорят "вызвать API", обычно имеют в виду обращение к конкретному endpoint - сочетанию HTTP-метода и пути.
GET /users - получить списокGET /users/42 - получить один объектPOST /users - создать новый объектОдин и тот же путь с разными методами может означать разные действия.
GET, POST, PATCH и другиеДиагностировать ответ нужно не только по коду, но и по содержимому тела.
Большинство современных HTTP API использует JSON (JavaScript Object Notation), потому что он компактный, читаемый человеком и хорошо поддерживается в языках программирования.
В реальном API семантика может отличаться, но этот набор - базовый инженерный минимум.
Метод GET запрашивает данные и по соглашению не должен менять состояние на сервере.
POST используют, когда нужно передать данные на сервер и инициировать обработку.
На практике чаще всего студенты встречают PATCH, потому что API обновляют объект частично.
Safe и idempotent - это не сленг, а формальные термины из спецификаций HTTP. Ими описывают поведение метода: можно ли ожидать изменения данных и что произойдет при повторной отправке того же запроса.
Эти свойства нужны не только для документации. На них опираются кэширование, повторные запросы при сетевых сбоях, работа прокси, браузеров, балансировщиков и клиентских библиотек. Например, если GET оборвался, его обычно можно безопасно повторить; а повторный POST может случайно создать объект дважды.
Почти любой анализ API начинается с чтения status code.
200 OK - успешное чтение или обновление201 Created - объект создан400 Bad Request - запрос некорректен401 Unauthorized, 403 Forbidden - проблемы доступа404 Not Found, 500 Internal Server ErrorContent-Type - формат телаAuthorization - токен или другой способ доступаAccept - какой ответ хочет клиентUser-Agent и Cookie - контекст клиентаСтуденты часто смотрят только на body, но очень много проблем скрывается именно в headers.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...Хорошее API почти всегда сопровождается документацией. Именно она задает ожидаемые параметры, форматы ответов, ошибки и правила аутентификации.
Swagger появился как набор инструментов для описания и тестирования REST API примерно в 2011 году. Позже его спецификация выросла в стандарт OpenAPI; с 2016 года развитие координирует инициатива OpenAPI Initiative. На практике OpenAPI - это формат описания API, а Swagger - популярные инструменты для визуализации, генерации и тестирования такой спецификации. Полезные ссылки: swagger.io и openapis.org.
В учебной практике Postman удобнее терминала: он показывает структуру запроса и ответа наглядно и снижает порог входа.
GETЭто базовый цикл, который студент должен довести до автоматизма.
Две частые зоны ошибок - это параметры в пути и параметры в строке запроса.
/users/42 - path parameter?page=2&limit=10 - query parametersЕсли параметры переданы неверно, очень часто приходит 400 или пустой результат.
Content-Type, забытый токен и JSON с ошибкой в структуре.Когда проект растет, руками менять домены, токены и id неудобно. Для этого в Postman есть переменные.
{{baseUrl}} - адрес сервера{{token}} - токен авторизации{{userId}} - id тестового объектаЭто особенно полезно, когда нужно быстро переключаться между тестовым и боевым окружением.
Для курса это полезно еще и потому, что студент может возвращаться к уже проверенным запросам без ручного набора.
Postman умеет не только отправлять запрос, но и проверять ответ скриптом.
200Хорошая практика - менять только один параметр за раз, чтобы понять, что именно вызвало ошибку.
Фактически коллекция Postman становится "живой документацией" по API.
curl - это инструмент терминала для отправки HTTP-запросов. Он менее наглядный, но очень полезный для серверов, скриптов и быстрой проверки без GUI.
-X задает метод-H добавляет заголовок-d передает тело-i - показать headers ответа-v - подробный режим для диагностики-o file.json - сохранить ответ в файл-L - идти по редиректам--json - удобная передача JSON в новых версияхТакой порядок снижает хаос и помогает быстрее локализовать ошибку.
Поэтому всегда читаем документацию и аккуратно работаем с переменными окружения в Postman.
Если студент уверенно читает endpoint, метод, headers, body и status code, значит базовое понимание HTTP API уже сформировано.