【OpenAPI】OpenAPIを使ってマッピング設定を行う

OpenAPI,Other

今回はOpenAPIを使ってマッピング設定を行う紹介です。
OpenAPIとLaravelを使っていきます。

OpenAPIを使ってマッピング設定とは?

OpenAPIを使用したLaravelアプリケーションのAPI設定方法と、コントローラーへのマッピング手法について解説します。
この設定により、API仕様の管理と実装の整合性を確保できます。

OpenAPI

OpenAPIの説明はこちらを参考にしてみてください。

icon

operationIdがControllerと紐付け後で行います。

# openapi.yml
openapi: 3.0.0
paths:
 /api/users:
   get:
     operationId: user#list
     responses:
       '200':
         content:
           application/json:
             schema:
               type: array
               items:
                 $ref: '#/components/schemas/User'

 /api/users/{id}:
   get:
     operationId: user#get
     parameters:
       - name: id
         in: path
         required: true
         schema:
           type: integer
     responses:
       '200':
         content:
           application/json:
             schema:
               $ref: '#/components/schemas/User'

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

スポンサードサーチ

OpenAPIでよく使われるキー

OpenAPIでよく使われるキーの一覧です。

余談ではありますが、次に出てくるので、覚えておきましょう。

return [
    'spec' => '仕様書の場所',
    'validate_responses' => '検証フラグ',
    'paths' => 'APIパス定義',
    'securities' => '認証設定',
    'servers' => 'サーバー設定',
    'middleware' => 'ミドルウェア設定'
];

config/openapi

LaravelのOpenAPI設定ファイルの詳細解説します。
「config/openapi」ファイルを読み込むことで、OpenAPIとControllerを紐づけてます。

<?php

return [
    'spec' => base_path(env('API_PATH', 'openapi/openapi.yml')),
    'validate_responses' => env('API_VALIDATE_RESPONSES', true),
    'operationIdMap' => [
        'api' => [
            'user#get' => 'UserController@get',
            'user#list' => 'UserController@list',
        ],
    ],
];

各行細かく説明しますね

'spec' => base_path(env('API_PATH', 'openapi/openapi.yml')),
  • base_path(): Laravelのルートディレクトリからの相対パスを指定
  • env('API_PATH’, …): 環境変数から設定を読み込みます
  • デフォルト値は 'openapi/openapi.yml’です
'validate_responses' => env('API_VALIDATE_RESPONSES', true),

APIレスポンスがOpenAPI仕様に準拠しているか検証します。
環境変数で制御可能(開発環境での使用を推奨)しており
デフォルトは有効(true)です。

'operationIdMap' => [
    'api' => [
        'user#get' => 'UserController@get',
        'user#list' => 'UserController@list',
    ],
],
icon

operationIdとContollerとメソッドが紐づいています

  • OpenAPI仕様のoperationIdとコントローラーメソッドの紐付け
  • 形式: 'operationId’ => 'コントローラー名@メソッド名’
  • 'api’グループ配下にマッピングを定義

スポンサードサーチ

Controller

コントローラーとメソッドはあくまでもサンプルとしてみてください。
今回は「config/openapi」を使って「openapi.yml」Contollerを紐づける設定についてなので、省略します。

// UserController.php
class UserController extends Controller 
{
    public function list()
    {
        $users = User::all();
        return response()->json($users);
    }

    public function get($id) 
    {
        $user = User::findOrFail($id);
        return response()->json($user);
    }
}
icon

以上になります。

可読性も上がるので参考にしてみてくださいね。

OpenAPI,OtherOpenAPI

Posted by kami