OpenAPI による再利用可能なコンポーネントの定義

APIGit

2023-06-15

openapi-components-reuse

OpenAPI仕様(OAS)は、APIを記述するための強力で標準化された方法を提供します。この仕様の最も価値のある機能の1つは、componentsオブジェクトにより、API 全体でさまざまな要素を再利用できるようになり、一貫性が確保され、冗長性が削減されます。

OAS のコンポーネントを理解する

componentsオブジェクトには、スキーマ、パラメータ、応答、ヘッダー、リクエスト本文、セキュリティ スキーム、および例を含めることができます。この集中化されたコンテナにより、API 定義全体の再利用性と保守性が向上します。

よく再利用されるコンポーネント

スキーマ

スキーマは、リクエストとレスポンスの本文の構造を定義します。スキーマは、ユーザー オブジェクト、エラー メッセージの構造、またはその他のデータ エンティティを表すことができます。

:

components:
  schemas:
    User:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string

パラメーター

パラメータは、パスの ID やページ区切りの制限やオフセットなど、複数の操作にわたって再利用できます。

:

components:
  parameters:
    userId:
      name: userId
      in: path
      required: true
      schema:
        type: integer
    limitParam:
      name: limit
      in: query
      schema:
        type: integer
        default: 10

反応

特にエラー処理用の共通の応答構造は、一度定義して再利用できるため、一貫した API 動作が保証されます。 :

components:
  responses:
    NotFound:
      description: The specified resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'

ヘッダー

さまざまなエンドポイントで使用される可能性のある標準ヘッダーは、一度定義して再利用できます。

:

components:
  headers:
    X-Rate-Limit:
      description: The number of allowed requests in the current period
      schema:
        type: integer

セキュリティスキーム

共通のセキュリティ スキームを定義すると、API 全体でそれらを再利用できるようになり、一貫したセキュリティ プラクティスが確保されます。

例:

components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY

再利用性に関するベストプラクティス

命名規則

コンポーネントには明確で説明的な名前を使用し、開発者がコンポーネントを理解して再利用できるようにします。たとえば、ユーザー オブジェクト スキーマの場合は User、一般的な 404 エラー応答の場合は NotFound です。

組織と構造

コンポーネントを論理的に整理し、タイプ (応答、パラメーターなど) またはドメイン領域 (認証、ユーザー、製品など) 別に分類します。

過剰なモジュール化を避ける

再利用性は重要ですが、細分化が進みすぎると API 仕様の理解と保守が複雑になる可能性があります。バランスが重要です。

シナリオ例

共通エラー応答スキーマ

components:
  schemas:
    Error:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string

ページネーションのためのクエリパラメータの再利用

paths:
  /users:
    get:
      parameters:
        - $ref: '#/components/parameters/limitParam'
        - name: offset
          in: query
          schema:
            type: integer
            default: 0

共有認証ヘッダー

paths:
  /protected/resource:
    get:
      security:
        - ApiKeyAuth: []
      responses:
        '200':
          description: Success

結論

効果的に使用するcomponentsOAS のオブジェクトを使用すると、API 仕様の一貫性と保守性が大幅に向上します。ベスト プラクティスに従い、APIGIT の直感的な API エディターを活用することで、開発者は効率的で再利用可能で整理された API 定義を作成できます。