Код-ревью Middle REST API и OpenAPI спрашивают часто обновлено
Ревью контракта API заказов
Вопрос
Аналитик описал API заказов. Найди проблемы в контракте.
GET /getOrders?page=1 -> 200 список всех заказов
POST /orders -> 200 {"result": "ok"}
POST /orders/{id}/delete -> 200
PUT /orders/{id} -> меняет только статус
GET /orders/{id} -> 200 {"error": "not found"}, если заказа нет
POST /payments {"amount": 1499.99} -> 200
Коротко
Исправленный вариант: GET /orders?limit&cursor с фильтрацией по пользователю, POST /orders → 201 + Location, DELETE /orders/{id} или POST /orders/{id}/cancel → 204/409, PATCH /orders/{id}, 404 в формате Problem Details, POST /payments с Idempotency-Key и суммой строкой или в копейках с валютой.
Что должен найти ревьюер
- Ошибкастрока 1Глагол в URL; «все заказы» без фильтра по владельцу и без ограничения размера страницы
- Ошибкастрока 2Создание должно возвращать 201 с id или Location созданного заказа, а не абстрактный «ok»
- Стильстрока 3Удаление через POST с глаголом в пути: по REST это DELETE /orders/{id} или отмена как отдельное действие
- Ошибкастрока 4PUT заменяет ресурс целиком; частичное изменение статуса это PATCH или отдельное действие
- Ошибкастрока 5Ошибка с кодом 200: нужен 404 и единый формат ошибки
- Безопасностьстрока 6Деньги числом с плавающей точкой без валюты и без Idempotency-Key для платежа
Разбор
Исправленный вариант: GET /orders?limit&cursor с фильтрацией по пользователю, POST /orders → 201 + Location, DELETE /orders/{id} или POST /orders/{id}/cancel → 204/409, PATCH /orders/{id}, 404 в формате Problem Details, POST /payments с Idempotency-Key и суммой строкой или в копейках с валютой.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.