Цель: ввести явное версионирование /api/v1, заложить стратегию для v2 и механизм объявления устаревания через HTTP-заголовки.
Зависимость: #1–#9, REPORT-1, USR-1.
Что сделать
- Перенеси эндпоинты под префикс
/api/v1/.... Реши как: префикс в @RequestMapping каждого контроллера, общий server.servlet.context-path/spring.mvc.servlet.path, или PathPattern-конфиг. Не сломай Swagger и публичные пути в SecurityConfig.
- Опиши стратегию для v2 в README: path versioning (
/api/v2) vs header (Accept: application/vnd.warehouse.v2+json) — выбери одну, обоснуй где хранить версию.
- Для устаревания добавь на старые эндпоинты заголовки
Deprecation: true и Sunset: <date> (через интерсептор/фильтр).
- Трудные места: миграция без слома существующих клиентов (можно ли временно отвечать и на старый путь, и на
/v1); отражение версии в Swagger; чтобы один контроллер не дублировался ради двух версий.
Acceptance criteria
Цель: ввести явное версионирование
/api/v1, заложить стратегию для v2 и механизм объявления устаревания через HTTP-заголовки.Зависимость: #1–#9, REPORT-1, USR-1.
Что сделать
/api/v1/.... Реши как: префикс в@RequestMappingкаждого контроллера, общийserver.servlet.context-path/spring.mvc.servlet.path, илиPathPattern-конфиг. Не сломай Swagger и публичные пути вSecurityConfig./api/v2) vs header (Accept: application/vnd.warehouse.v2+json) — выбери одну, обоснуй где хранить версию.Deprecation: trueиSunset: <date>(через интерсептор/фильтр)./v1); отражение версии в Swagger; чтобы один контроллер не дублировался ради двух версий.Acceptance criteria
/api/v1/...Deprecation/Sunset