Как можно обеспечить версионирование API

«Как можно обеспечить версионирование API» — вопрос из категории API и интеграции, который задают на 27% собеседований Системный Аналитик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для версионирования API можно использовать несколько подходов:

  1. URL-based версионирование
    Встраиваем версию в URL:
    /api/v1/users
    /api/v2/users
  1. Заголовки HTTP
    Используем кастомный заголовок:
    GET /api/users
    Accept: application/vnd.company.api.v1+json
  1. Параметры запроса
    Добавляем версию как параметр:
    /api/users?version=1

Пример реализации URL-based подхода в Express.js:

// v1
app.get('/api/v1/users', (req, res) => {
  res.json({version: 'v1'});
});

// v2
app.get('/api/v2/users', (req, res) => {
  res.json({version: 'v2', features: ['pagination']});
});

Рекомендации:

  • URL-based - самый простой и понятный
  • Поддерживайте старые версии 1-2 года
  • Документируйте изменения между версиями
  • Используйте semantic versioning (MAJOR.MINOR.PATCH)