ITED
bootcamp

Лекция 5.3 HTTP API
Концепция и практика: Postman и curl

Компьютерные сети

Почему тема HTTP API так важна

Сегодня почти любое приложение общается с сервером через API. Даже если пользователь видит кнопку или форму, под капотом почти всегда отправляется HTTP-запрос.

  • Веб, mobile, CRM, чат-боты - все опираются на API
  • API связывает интерфейс, backend и внешние сервисы
  • Понимание API упрощает диагностику сетевых проблем
Компьютерные сети

Что такое HTTP API

HTTP API - это программный интерфейс, доступный по протоколу HTTP. Клиент обращается к адресу endpoint, передает параметры, а сервер возвращает структурированный ответ.

  • API - правила общения программ
  • HTTP - транспорт этих запросов и ответов
  • Чаще всего ответ приходит в JSON
Схема REST API: клиент, HTTP, URL, сервер и JSON-ответ

Рис.: клиент отправляет HTTP-запрос на URL endpoint, сервер возвращает ответ, часто в формате JSON

Компьютерные сети

Endpoint: адрес конкретной операции

Когда говорят "вызвать API", обычно имеют в виду обращение к конкретному endpoint - сочетанию HTTP-метода и пути.

  • GET /users - получить список
  • GET /users/42 - получить один объект
  • POST /users - создать новый объект

Один и тот же путь с разными методами может означать разные действия.

Компьютерные сети

Из чего состоит HTTP-запрос

  • Метод: GET, POST, PATCH и другие
  • URL: домен, путь, query-параметры
  • Headers: служебные метаданные
  • Body: данные запроса, если они нужны
POST /api/orders HTTP/1.1 Host: example.org Authorization: Bearer token Content-Type: application/json {"productId":12,"count":2}
Компьютерные сети

Из чего состоит HTTP-ответ

  • Status code показывает общий результат
  • Headers описывают формат, кэш, cookies, тип данных
  • Body содержит полезный результат или описание ошибки
HTTP/1.1 200 OK Content-Type: application/json {"id":42,"name":"Igor","role":"student"}

Диагностировать ответ нужно не только по коду, но и по содержимому тела.

Компьютерные сети

Почему JSON стал стандартом по умолчанию

Большинство современных HTTP API использует JSON (JavaScript Object Notation), потому что он компактный, читаемый человеком и хорошо поддерживается в языках программирования.

  • Объекты и массивы легко сериализуются
  • Структура подходит для web и mobile
  • Postman особенно удобен именно с JSON
Компьютерные сети

Методы HTTP: быстрый обзор

  • GET - чтение данных
  • POST - создание или запуск операции
  • PUT - полная замена ресурса
  • PATCH - частичное изменение
  • DELETE - удаление

В реальном API семантика может отличаться, но этот набор - базовый инженерный минимум.

Компьютерные сети

GET: самый частый метод для чтения

Метод GET запрашивает данные и по соглашению не должен менять состояние на сервере.

  • Параметры часто передаются в query string
  • GET удобно кэшировать и повторять
  • Типичный пример: фильтры, списки, поиск
GET /posts?userId=3
Компьютерные сети

POST: создание и запуск действий

POST используют, когда нужно передать данные на сервер и инициировать обработку.

  • Создание заказа, регистрации, комментария
  • Логин и выдача токена
  • Запуск вычисления или фоновой задачи
POST /auth/login {"email":"user@example.com","password":"secret"}
Компьютерные сети

PUT, PATCH и DELETE

  • PUT - заменить ресурс целиком
  • PATCH - изменить только часть полей
  • DELETE - удалить ресурс или пометить как удаленный

На практике чаще всего студенты встречают PATCH, потому что API обновляют объект частично.

Компьютерные сети

Полезные свойства методов: safe и idempotent

Safe и idempotent - это не сленг, а формальные термины из спецификаций HTTP. Ими описывают поведение метода: можно ли ожидать изменения данных и что произойдет при повторной отправке того же запроса.

  • Safe - запрос предназначен только для чтения и не должен менять состояние сервера
  • Idempotent - один и тот же запрос можно повторить много раз, итоговый результат останется тем же
  • GET, HEAD, OPTIONS обычно safe; PUT и DELETE - не safe, но idempotent; POST чаще всего не idempotent

Эти свойства нужны не только для документации. На них опираются кэширование, повторные запросы при сетевых сбоях, работа прокси, браузеров, балансировщиков и клиентских библиотек. Например, если GET оборвался, его обычно можно безопасно повторить; а повторный POST может случайно создать объект дважды.

Компьютерные сети

Коды статуса: язык обратной связи от сервера

  • 1xx - служебные промежуточные ответы
  • 2xx - операция выполнена успешно
  • 3xx - перенаправление
  • 4xx - ошибка на стороне клиента
  • 5xx - проблема на стороне сервера

Почти любой анализ API начинается с чтения status code.

Компьютерные сети

Какие статусы встречаются чаще всего

  • 200 OK - успешное чтение или обновление
  • 201 Created - объект создан
  • 400 Bad Request - запрос некорректен
  • 401 Unauthorized, 403 Forbidden - проблемы доступа
  • 404 Not Found, 500 Internal Server Error
Компьютерные сети

Headers: важная часть контракта API

  • Content-Type - формат тела
  • Authorization - токен или другой способ доступа
  • Accept - какой ответ хочет клиент
  • User-Agent и Cookie - контекст клиента

Студенты часто смотрят только на body, но очень много проблем скрывается именно в headers.

Компьютерные сети

Как API обычно защищают доступ

  • API key - простой идентификатор клиента
  • Bearer token - частый способ авторизации; пример: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
  • Cookies и сессии - типично для web-приложений
  • OAuth 2.0 - протокол выдачи и делегирования доступа, а не способ кодирования строки, поэтому он не равен Base64
Важно: Base64 - это способ кодирования данных в текстовый вид, а не механизм авторизации. В Bearer-схеме токен может быть просто случайной строкой, а в JWT обычно отдельные части закодированы в base64url. Для практики можно посмотреть онлайн-декодеры: base64decode.org и jwt.io.
В учебной практике чаще всего вы увидите API key или Bearer token, поэтому именно их важно уметь быстро подставлять в Postman и понимать, что токен - это credential, а Base64 - только возможная форма записи его частей.
Компьютерные сети

Документация API: без нее работать неудобно

Хорошее API почти всегда сопровождается документацией. Именно она задает ожидаемые параметры, форматы ответов, ошибки и правила аутентификации.

  • Ищем base URL и список endpoint
  • Проверяем обязательные headers и body
  • Смотрим примеры ответов и ошибок

Swagger появился как набор инструментов для описания и тестирования REST API примерно в 2011 году. Позже его спецификация выросла в стандарт OpenAPI; с 2016 года развитие координирует инициатива OpenAPI Initiative. На практике OpenAPI - это формат описания API, а Swagger - популярные инструменты для визуализации, генерации и тестирования такой спецификации. Полезные ссылки: swagger.io и openapis.org.

Компьютерные сети

Почему основной акцент делаем на Postman

В учебной практике Postman удобнее терминала: он показывает структуру запроса и ответа наглядно и снижает порог входа.

  • Не нужно помнить синтаксис команд сразу
  • Видны query, headers, body, auth в отдельных вкладках
  • Легче повторять и сравнивать запросы
Компьютерные сети

Интерфейс Postman: что важно знать сразу

  • Строка метода и URL - верхняя часть окна
  • Вкладки Params, Authorization, Headers, Body
  • Панель ответа с кодом, временем и телом
  • Коллекции слева для сохранения запросов
Компьютерные сети

Первый запрос в Postman

  • Выбрать метод GET
  • Вставить URL endpoint
  • Нажать Send
  • Посмотреть status, headers, body

Это базовый цикл, который студент должен довести до автоматизма.

Компьютерные сети

Path params и query params в Postman

Две частые зоны ошибок - это параметры в пути и параметры в строке запроса.

  • /users/42 - path parameter
  • ?page=2&limit=10 - query parameters
  • Postman умеет показывать и редактировать query отдельно

Если параметры переданы неверно, очень часто приходит 400 или пустой результат.

Компьютерные сети

Вкладки Headers, Body и Authorization

  • В Headers передаем тип контента и токены
  • В Body отправляем JSON, form-data или raw-text
  • Во вкладке Authorization Postman подставляет токен сам
На учебных заданиях чаще всего ломается связка из трех вещей: неверный Content-Type, забытый токен и JSON с ошибкой в структуре.
Компьютерные сети

Переменные и окружения в Postman

Когда проект растет, руками менять домены, токены и id неудобно. Для этого в Postman есть переменные.

  • {{baseUrl}} - адрес сервера
  • {{token}} - токен авторизации
  • {{userId}} - id тестового объекта

Это особенно полезно, когда нужно быстро переключаться между тестовым и боевым окружением.

Компьютерные сети

Collections: как навести порядок в запросах

  • Сохраняем запросы не вразнобой, а в коллекции
  • Группируем по модулям: auth, users, orders
  • Коллекция помогает повторять сценарии и делиться ими

Для курса это полезно еще и потому, что студент может возвращаться к уже проверенным запросам без ручного набора.

Компьютерные сети

Тесты в Postman: простая автоматизация

Postman умеет не только отправлять запрос, но и проверять ответ скриптом.

  • Проверка статуса 200
  • Проверка наличия поля в JSON
  • Сохранение токена из ответа в переменную
pm.test("Status 200", function () { pm.response.to.have.status(200); });
Компьютерные сети

Как отлаживать ошибки в Postman

  • Сначала читаем status code
  • Потом смотрим body ошибки и headers
  • Сравниваем URL, метод, auth и формат body
  • При необходимости открываем Postman Console

Хорошая практика - менять только один параметр за раз, чтобы понять, что именно вызвало ошибку.

Компьютерные сети

Импорт, экспорт и командная работа в Postman

  • Можно импортировать коллекцию из JSON или по OpenAPI
  • Можно экспортировать свои запросы преподавателю или команде
  • Это удобно для лабораторных и повторяемых сценариев

Фактически коллекция Postman становится "живой документацией" по API.

Компьютерные сети

Зачем тогда нужен curl

curl - это инструмент терминала для отправки HTTP-запросов. Он менее наглядный, но очень полезный для серверов, скриптов и быстрой проверки без GUI.

  • Работает почти везде
  • Хорошо подходит для автоматизации
  • Удобен в документации и CI/CD
Компьютерные сети

Базовые примеры curl

curl https://jsonplaceholder.typicode.com/posts/1 curl -X POST https://reqres.in/api/users ^ -H "Content-Type: application/json" ^ -d "{\"name\":\"morpheus\",\"job\":\"leader\"}"
  • -X задает метод
  • -H добавляет заголовок
  • -d передает тело
Компьютерные сети

Полезные ключи curl в практике

  • -i - показать headers ответа
  • -v - подробный режим для диагностики
  • -o file.json - сохранить ответ в файл
  • -L - идти по редиректам
  • --json - удобная передача JSON в новых версиях
Компьютерные сети

Postman и curl: что выбирать студенту

  • Для обучения и ручной проверки - прежде всего Postman
  • Для серверной автоматизации и документации - curl
  • Для уверенной инженерной практики нужно знать оба инструмента
Если цель - понять API и не путаться в параметрах, сначала работаем в Postman. Когда сценарий уже ясен, тот же запрос полезно уметь воспроизвести через curl.
Компьютерные сети

Рабочий алгоритм студента при тестировании API

  • Прочитать документацию и выписать endpoint
  • Сначала отправить простой GET в Postman
  • Потом проверить auth, headers и body
  • Только после этого сравнить с curl или кодом

Такой порядок снижает хаос и помогает быстрее локализовать ошибку.

Компьютерные сети

Полезные API для практики: простые стартовые сервисы

JSONPlaceholderФейковые posts, users, comments. Идеален для первых GET, POST, PATCH, DELETE.
DummyJSONПохож на реальный магазин и пользователей. Удобен для фильтров, пагинации и поиска.
ReqResНебольшой учебный API с регистрацией, логином и типовыми CRUD-сценариями.
Postman EchoВозвращает назад ваш запрос. Очень полезен для проверки headers, params и body.
Компьютерные сети

Полезные API: данные из реального мира

Open-MeteoПогодные данные без сложной регистрации. Отлично подходит для query-параметров.
GitHub APIРеальный промышленный API: репозитории, пользователи, rate limiting, auth.
REST CountriesИнформация о странах. Удобно тестировать поиск и фильтрацию.
ExchangeRate APIХороший пример сервиса с числовыми данными и обновляемыми значениями.
Компьютерные сети

Полезные API: интересные сервисы для тренировки

PokeAPIСтруктурированные данные, вложенные объекты и большие ответы - удобно для чтения JSON.
SWAPIДанные по Star Wars. Подходит для связей между сущностями и навигации по ресурсам.
The Cat API / Dog APIПростые и быстрые ответы, удобно проверять ключи доступа и медиаданные.
Deck of Cards APIНаглядные игровые сценарии: создать колоду, вытянуть карту, изменить состояние.
Компьютерные сети

Полезные сервисы для отладки, mock и проверки запросов

httpbinКлассический сервис для проверки метода, headers, cookies, redirect и auth.
Postman Mock ServerПозволяет поднять фейковый API и тренироваться без реального backend.
MockyБыстрый способ сгенерировать URL, который вернет заранее заданный JSON.
BeeceptorПозволяет ловить запросы в свой mock endpoint и анализировать их структуру.
Компьютерные сети

О чем надо помнить при работе с чужими API

  • Могут быть лимиты запросов и rate limit
  • Часть endpoint требует токен или API key
  • Публичное API может менять контракт со временем
  • Нельзя публиковать секреты и реальные токены

Поэтому всегда читаем документацию и аккуратно работаем с переменными окружения в Postman.

Компьютерные сети

Итог лекции

  • HTTP API - это контракт взаимодействия клиента и сервера
  • Структуру запроса и ответа нужно читать целиком
  • Основной учебный инструмент - Postman
  • curl нужен для терминала, автоматизации и воспроизводимости
  • Тренироваться лучше на безопасных публичных API

Если студент уверенно читает endpoint, метод, headers, body и status code, значит базовое понимание HTTP API уже сформировано.