Ответ
Версионирование API — это практика управления изменениями в публичном интерфейсе сервиса. Оно позволяет развивать API, не нарушая работу существующих клиентских приложений.
Основные цели:
- Обеспечение обратной совместимости: Старые клиенты (
v1) продолжают работать, пока вы развертываете новые функции вv2. - Контролируемый вывод изменений: Клиенты могут мигрировать на новую версию в своем темпе.
- Четкая коммуникация: Версия явно указывает, какой контракт используется.
Распространенные стратегии версионирования:
- В URI пути:
https://api.example.com/v1/users(наиболее явный и простой). - В заголовке запроса:
Accept: application/vnd.company.api+json;version=2 - В параметре запроса:
https://api.example.com/users?api-version=2(менее предпочтительно).
Пример (Spring Boot):
// Контроллер для API v1
@RestController
@RequestMapping("/api/v1/users")
public class UserControllerV1 {
@GetMapping
public List<UserV1> getUsers() { /* ... */ }
}
// Контроллер для API v2 с новыми полями
@RestController
@RequestMapping("/api/v2/users")
public class UserControllerV2 {
@GetMapping
public List<UserV2> getUsers() { /* ... */ }
}
Без версионирования любое изменение (переименование поля, изменение формата ответа) немедленно сломает всех клиентов.