HTTP API и серверные основы
Контракты запросов, проверка данных, коды ошибок, пагинация, файлы, cookies, авторизация, права, платежи и фоновые очереди.
Материалы
- Серверный поиск по сайту: сервис и API
Как подготовить версионный индекс Meilisearch, дождаться задач и прочитать ответ поискового API.
- Поисковый сервис: обработка ошибок и отказов
Как ограничить поисковый API, сохранить ключи на сервере и наблюдать ошибки без записи полных запросов.
- HTTP-запрос и ответ
Разбираем запрос и ответ каталога: адрес, метод, заголовки, тело и границы учебной модели.
- Методы HTTP: смысл GET, POST и изменений ресурса
Выбираем GET, HEAD, POST, PUT и DELETE по смыслу операции на одном каталоге.
- Коды состояния HTTP: ответы сервера
Согласуем 200, 201, 204, 400, 404, 409, 422 и 5xx с конкретным исходом операции.
- HTTP-заголовки: метаданные запроса и ответа
Читаем Content-Type, Accept, Location, Allow, Cache-Control, Vary и ETag по их роли.
- HTTP API: представление ресурса
Различаем курс, его постоянный адрес, JSON, HTML и редактируемое представление.
- Content negotiation в HTTP: выбор формата ответа
Выбираем JSON или HTML через Accept, учитываем q=0, Vary и различие 406/415.
- Контракт JSON API
Определяем обязательные поля, типы JSON, различие null и пропуска, вход и совместимость ответа.
- HTTP API: путь и параметры запроса
Разделяем адрес записи и параметры выборки, кодируем значения и объявляем ошибки query.
- HTTP API: проверка входного запроса
Проверяем тип и синтаксис входа, поля и диапазоны до изменения каталога.
- Ошибки HTTP API: единый формат ответа
Проектируем Problem Details: type, title, status, detail, instance и собственные ошибки полей.
- Идемпотентность HTTP API: повтор операции
Различаем повторяемый эффект и одинаковый ответ, безопасное чтение и повтор POST.
- Idempotency key в API: ключ повторяемой операции
Проектируем прикладной Idempotency-Key: намерение, область, отпечаток, атомарность и срок результата.
- Контракт пагинации API
Строим устойчивую пагинацию: полный порядок, непрозрачный курсор и ограниченный снимок.
- Фильтрация и сортировка API
Определяем последовательность фильтрации, полного порядка и пагинации без произвольных выражений.
- Условные GET-запросы HTTP и валидация кеша
Сохраняем представление с ETag и проверяем его через If-None-Match без тела в 304.
- Условное обновление HTTP-ресурса: защита от конфликтов
Защищаем PUT и DELETE сильным If-Match, различаем 428/412 и атомарно меняем версию.
- HTTP API: варианты кешируемого ответа
Разделяем публичный кеш, варианты представления и персональный ответ без смешивания пользователей.
- Cookies в HTTP
Определяем host-only cookie, Path, Secure, HttpOnly, SameSite и удаление сессионного идентификатора.
- HTTP API: сессия и состояние клиента
Разделяем cookie, серверную запись сессии, сроки, ротацию, отзыв и CSRF-токен.
- Аутентификация в контракте API
Согласуем session cookie и Bearer как альтернативы, 401 challenge и безопасный отказ без HTML-редиректа.
- HTTP API: права на ресурс
Проверяем действие и область курса после установления личности, включая перенос между темами.
- CORS в HTTP API: origin и доступ браузера
Различаем origin и site, preflight и фактический запрос, CORS и серверное разрешение.