インターネットの発展に伴い、Web アプリケーション開発が注目を集めています。この重要な側面は、API (アプリケーション プログラミング インターフェイス) です。これにより、さまざまなアプリケーションがインターネット経由で通信し、相互作用できるようになります。 API 設計において、オープン API は開発者に優れた柔軟性と柔軟性を提供するだけでなく、オープンなコラボレーションを通じて広範なイノベーションを可能にするため、ますます人気が高まっています。そこで、この記事ではOpen APIの仕様とPHPの実践方法を紹介します。
現在、多くの開発者がオープン API を通じてインターネット上にアプリケーションを構築しています。 API の目的は同じですが、API を定義する際には異なる規則と仕様が存在します。 Open API は、API の開発とドキュメントの生成を簡素化するために設計された、開発者にとって使いやすい仕様とツールのセットです。
Open API 仕様は、Open API Initiative (OAI) によってホストされており、操作、入出力形式、エラー処理、およびその他の特性を定義する、JSON または YAML で記述された API 記述ドキュメントのセットです。 API。オープン API 仕様は、次のような多くの利点を提供するため、開発者や企業の間でますます好まれています。
この記事では、Open API 仕様を実装する具体的な方法と PHP を組み合わせます。
この記事では、簡単な例を使用して、Open API 仕様を PHP に適用する方法を説明します。デモンストレーションの便宜上、Lumen フレームワークと Swagger PHP ツールを使用します。
Lumen フレームワークは、Laravel フレームワークに基づくマイクロフレームワークであり、API の開発に非常に適しています。 Composer を通じて Lumen フレームワークをインストールできます:
composer create-project --prefer-dist laravel/lumen myapi
Swagger PHP は、Open API 仕様のドキュメントとクライアント コードを生成するためのツールであり、Open API を生成するツールを提供します。 API 標準インターフェイスは、Lumen フレームワークとシームレスに統合できます。 Composer を通じて Swagger PHP の依存関係をインストールできます:
composer require zircote/swagger-php
インストールが完了したら、Swagger PHP を構成するために swagger.php ファイルを作成する必要があります:
<?php use LaminasConfigFactory; require_once __DIR__ . '/vendor/autoload.php'; $swagger = OpenApiscan(__DIR__ . '/app/Http/Controllers'); header('Content-Type: application/x-yaml'); echo $swagger->toYaml();
ここでは、OpenApi## を使用します。 #sccan メソッドは、アプリケーション内のすべてのコントローラーをスキャンし、Open API 仕様を生成し、出力用に YAML 形式に変換します。ここでのコントローラーとは、リクエスト処理メソッドを格納するクラスを指します。関連する詳細については、次のサンプル コードで説明します。
routes/web.php ファイルで定義できます。この例では、次のルートを追加します。
$router->get('/tasks', 'TaskController@index'); $router->post('/tasks', 'TaskController@store'); $router->put('/tasks/{id}', 'TaskController@update'); $router->delete('/tasks/{id}', 'TaskController@destroy');
{id} は、対応する TODO 項目の ID 値を示すパラメーターを URL で渡す必要があることを意味します。
app を使用します。 /Http/Controllers/TaskController.php。
<?php namespace AppHttpControllers; use IlluminateHttpRequest; use IlluminateDatabaseEloquentModelNotFoundException; use AppModelsTask; class TaskController extends Controller { public function index() { $tasks = Task::all(); return response()->json($tasks); } public function store(Request $request) { $task = new Task; $task->title = $request->input('title'); $task->completed = $request->input('completed'); $task->save(); return response()->json($task); } public function update(Request $request, $id) { try { $task = Task::findOrFail($id); $task->title = $request->input('title'); $task->completed = $request->input('completed'); $task->save(); return response()->json($task); } catch (ModelNotFoundException $e) { return response('Task not found.', 404); } } public function destroy($id) { try { $task = Task::findOrFail($id); $task->delete(); return response(null, 204); } catch (ModelNotFoundException $e) { return response('Task not found.', 404); } } }
Model メソッドを使用してデータベースに接続し、さまざまな HTTP リクエスト メソッドを通じて対応するタスク操作を実行します。
php swagger.php
composer require --dev zircote/swagger-ui-expressive
bootstrap/app.phpファイル Swagger UI ルートを定義します:
<?php $app->group(['namespace' => 'ZircoteSwaggerExpressiveUi'], function() use ($app) { $app->get('/docs', 'Controller::getDocsAction'); });
/docs ルートを通じて Swagger UI インターフェイスにアクセスし、API 定義が正しく表示されることを確認できます。
以上がPHP は、オープンソースの Open API 仕様と実践を実装しています。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。