Практикум REST и WebSocket — чек-лист самопроверки
Вопросы
- Какие два сервиса входят в OrderDesk и на каких портах они работают локально?
- Кто единственный изменяет поле
stockAvailableи почему? - Какой префикс версии API используется в практикуме?
- Перечислите основные ресурсы catalog-api (
/products,/reservations, …). - Какие HTTP-методы и коды ответа у
POST /api/v1/orders? - Зачем REST между orders-api и catalog-api, а WebSocket — к браузеру?
- Что хранит orders-api, что остаётся в каталоге?
- Какие заголовки обязательны для межсервисного
POST /reservations? - Чем JWT отличается от API-ключа в этой архитектуре?
- Как получить access token в учебном стенде?
- Куда передаётся JWT при подключении WebSocket?
- Какой JSON-тип события рассылается при смене статуса заказа?
- Зачем в протоколе WS есть
pingиpong? - Что такое
Idempotency-Keyна резерве и что будет при повторе с тем же ключом? - Какой HTTP-код ожидается, если catalog-api остановлен при создании заказа?
- Какой код при попытке зарезервировать больше, чем
stockAvailable? - Почему Postman может работать, а браузер — нет (CORS)?
- Какие переменные окружения Postman OrderDesk Local вы настраивали?
- В каком порядке идут запросы E2E в коллекции (товар → token → заказ → WS)?
- Что делает Pre-request Script с
X-Request-Idна уровне коллекции? - Как связаны
CATALOG_API_KEYиCatalog:ApiKey? - Какой таймаут HttpClient рекомендован для вызова каталога?
- Что проверяет негативный кейс
POST /ordersсquantity: 9999? - Чем отличается ответ
401на каталоге без ключа от401на orders без Bearer? - Как в логах связать один заказ между Python и C#?
- Где в энциклопедии читать теорию REST и WebSocket до/после практикума?
- Что показывает интерактивная песочница на странице о разделе?
- Какие поля минимально нужны в теле
POST /api/v1/products? - Что такое Problem Details при
502и зачем они клиенту? - Какие три статуса заказа проходит учебный жизненный цикл (
draft→ …)?
Практические задания
- Поднимите catalog-api и orders-api, пройдите E2E в Postman по шагу 8 и сохраните экспорт коллекции.
- Остановите catalog-api, создайте заказ — зафиксируйте тело ответа
502и скрин логов orders-api сX-Request-Id. - Повторите
POST /reservationsс однимIdempotency-Keyдважды — сравнитеstockAvailableдо и после. - Подключите WebSocket в Postman, создайте заказ, получите
order.status_changed— выпишите полный JSON кадра. - Настройте CORS на orders-api для
http://localhost:3000и вызовитеGET /ordersиз простой HTML-страницы на другом порту. - Прогоните негативную папку коллекции (401, 409, 502) и опишите в одном абзаце ожидаемый статус для каждого кейса.
Если на половину вопросов ответ уверенный — вернитесь к сценарию и контракту. Итоги и FAQ по сбоям — 998.
Связанные материалы
- Практикум REST и WebSocket — о разделе
- Итоги раздела
- Микросервисы и интеграция — о разделе
- HTTP как основа веб-интеграций
См. также
Другие статьи этого же раздела в боковом меню (как на странице "О разделе"). Два сервиса OrderDesk: каталог на Python и заказы на C#, границы ответственности, потоки REST и WebSocket. Ресурсы OrderDesk, таблица методов HTTP, коды ответов и фрагмент OpenAPI для catalog-api и orders-api. Доменные сущности OrderDesk, DTO для REST, маппинг Python (Pydantic) и C# (record + ручной маппер). FastAPI, SQLite, эндпоинты товаров и резервирования, Pydantic и проверка через uvicorn. ASP.NET Core 8, Minimal API, HttpClient к catalog-api, SQLite и создание заказа с резервом. JWT, API-ключ между сервисами, HTTPS, таймауты, идемпотентность и заголовок X-Request-Id в OrderDesk. Протокол JSON-сообщений, hub в ASP.NET Core, heartbeat и подписка клиента на статусы OrderDesk. Коллекция Postman, переменные окружения и сквозной сценарий OrderDesk — товар, заказ, WebSocket. Краткое резюме раздела 8.08 — OrderDesk, catalog-api, orders-api, JWT, API-ключ, WebSocket и типичные сбои практикума.Практикум — сценарий и архитектура OrderDesk
Практикум — проектирование контракта API
Практикум — модели данных и маппинг DTO
Практикум — сервис каталога на Python
Практикум — сервис заказов на C#
Практикум — безопасность и устойчивость
Практикум — WebSocket и события заказов
Практикум — проверка в Postman
Практикум REST и WebSocket — итоги