mcpField
A
api-versioning-strategy

api-versioning-strategy

github.com/secondsky開発242405 回インストール5 週間前に更新
リポジトリ

api-versioning-strategy について

API のバージョニング方法の選択、実装、非推奨化を支援するスキルです。バージョンアダプターや段階的な終了の設計例を開発者に示します。

主な機能

  1. 01パス・ヘッダー・クエリ方式の比較
  2. 02URL パスによるルーター設定例
  3. 03バージョンアダプターの説明
  4. 04互換変更と破壊的変更の区別
  5. 05非推奨化の期間設計

活用シーン

  1. 01新しい API のバージョン方式選定
  2. 02旧ルートを維持した新バージョン追加
  3. 03クライアント移行とエンドポイント終了の計画

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/secondsky/claude-skills --skill api-versioning-strategy

インストール後、Claude Code で/api-versioning-strategyを入力して読み込まれたか確認します。

詳細

API バージョニング戦略

適切な廃止までの期間を設定し、API のバージョニング方式を選択して実装します。

バージョニング方式

方式例メリットデメリット
URL パス/api/v1/users明確で、キャッシュに適していますURL が煩雑になります
ヘッダーAPI-Version: 1URL がすっきりします見えにくく、テストが難しくなります
クエリ?version=1簡単に使用できますRESTful ではありません

URL パスによるバージョニング(推奨)

const v1Router = require('./routes/v1');
const v2Router = require('./routes/v2');

app.use('/api/v1', v1Router);
app.use('/api/v2', v2Router);

バージョンアダプターパターン

// Transform between versions
const v1ToV2 = (v1Response) => ({
  data: {
    type: 'user',
    id: v1Response.user_id,
    attributes: {
      name: v1Response.user_name,
      email: v1Response.email
    }
  }
});

廃止を示すヘッダー

app.use('/api/v1', (req, res, next) => {
  res.setHeader('Deprecation', 'true');
  res.setHeader('Sunset', 'Sat, 01 Jun 2025 00:00:00 GMT');
  res.setHeader('Link', '</api/v2>; rel="successor-version"');
  next();
});

互換性のある変更と破壊的変更

互換性のある変更(バージョンを上げる必要はありません):

  • 任意フィールドの追加
  • 新しいエンドポイントの追加
  • 任意パラメーターの追加

破壊的変更(新しいバージョンが必要です):

  • フィールドの削除
  • フィールド型の変更
  • レスポンス構造の再編成
  • エンドポイントの削除

廃止までのタイムライン

フェーズ期間対応
廃止予定3 か月ヘッダーとドキュメントを追加
サンセット告知3 か月ユーザーにメールを送信
読み取り専用1 か月書き込みを無効化
シャットダウン-410 Gone を返す

ベストプラクティス

  • 最低でも N-1 バージョンをサポートします
  • 6 か月以上の移行期間を設けます
  • コード例を含む移行ガイドを用意します
  • バージョンの利用状況を監視し、廃止の判断に役立てます

コメント