【えーぴーあいこんとらくと】
APIコントラクト とは?
最終更新:
💡 APIの提供者と利用者が共有する約束
APIの提供者と利用者が共有する、要求・応答や認証・エラーなどの約束。OpenAPIやGraphQLスキーマによる記述、仕様先行の開発、実装との整合性確認と互換性の限界を解説します。
📌 このページのポイント
APIコントラクトには、何を書くの?
OpenAPIが、コントラクトそのもの?
最初に決めると、どう便利なの?
仕様どおりの型なら、変更しても平気?
必ずではないよ。同じ数値型でも、金額の単位が円から銭に変われば利用側の計算が壊れることがある。項目の削除や必須入力の追加だけでなく、意味やエラーの動作の変化も確認するんだ。
コントラクトテストで、全部保証できる?
たとえばPactは利用側が期待する要求・応答を記録し、提供側でも確認する仕組みだよ。ただし確認したやり取りが対象で、業務ロジック全体や性能の試験を置き換えるものではない。仕様の検査、機能の試験、運用時の確認を組み合わせよう。
もっと詳しく知りたい人へ
OpenAPIとSwaggerは同じ名前?
OpenAPIは仕様の名前です。Swaggerは、その仕様に関連するツールなどの名前としても使われます。古いSwagger仕様からOpenAPIへ発展した経緯はありますが、現在の仕様とツールをすべて同じものとして扱わないようにします。
破壊的な変更は、URLをv2にすれば解決する?
新旧のAPIを分ける方法はありますが、利用者が移行する手順、旧版を維持する期間、認証やデータの互換性なども必要です。URLに番号を付けるだけで既存の利用者が安全に移行できるわけではありません。変更が利用者へ与える影響を調べ、合意した移行計画とテストで確認します。
📖 おまけ:英語の意味
「API Contract」 = APIの契約・約束
💬 提供者と利用者の間で共有する仕様を、契約になぞらえています。ここでいう契約は、法的な契約書だけを指すものではありません。