ホームページ  >  記事  >  バックエンド開発  >  PHP は、オープンソースの Open API 仕様と実践を実装しています。

PHP は、オープンソースの Open API 仕様と実践を実装しています。

王林
王林オリジナル
2023-06-18 23:58:241561ブラウズ

インターネットの発展に伴い、Web アプリケーション開発が注目を集めています。この重要な側面は、API (アプリケーション プログラミング インターフェイス) です。これにより、さまざまなアプリケーションがインターネット経由で通信し、相互作用できるようになります。 API 設計において、オープン API は開発者に優れた柔軟性と柔軟性を提供するだけでなく、オープンなコラボレーションを通じて広範なイノベーションを可能にするため、ますます人気が高まっています。そこで、この記事ではOpen APIの仕様とPHPの実践方法を紹介します。

オープン API 仕様の概要

現在、多くの開発者がオープン API を通じてインターネット上にアプリケーションを構築しています。 API の目的は同じですが、API を定義する際には異なる規則と仕様が存在します。 Open API は、API の開発とドキュメントの生成を簡素化するために設計された、開発者にとって使いやすい仕様とツールのセットです。

Open API 仕様は、Open API Initiative (OAI) によってホストされており、操作、入出力形式、エラー処理、およびその他の特性を定義する、JSON または YAML で記述された API 記述ドキュメントのセットです。 API。オープン API 仕様は、次のような多くの利点を提供するため、開発者や企業の間でますます好まれています。

  • 最適化された API ドキュメント: オープン API 仕様は、API ドキュメントの基礎となる API 構造とメタデータを定義します。このビルドでは自動化サポートが強化され、作成と保守が容易になります。
  • 統一された API 設計: オープン API 仕様に従うことで、API 設計の一貫性と標準化が可能になり、開発者間の互換性が向上します。
  • クライアント コードの生成が簡単: Open API 仕様を使用すると、JavaScript、Java、Python などのさまざまなクライアント コードを簡単に生成できます。

この記事では、Open API 仕様を実装する具体的な方法と PHP を組み合わせます。

実践

この記事では、簡単な例を使用して、Open API 仕様を PHP に適用する方法を説明します。デモンストレーションの便宜上、Lumen フレームワークと Swagger PHP ツールを使用します。

Lumen のインストール

Lumen フレームワークは、Laravel フレームワークに基づくマイクロフレームワークであり、API の開発に非常に適しています。 Composer を通じて Lumen フレームワークをインストールできます:

composer create-project --prefer-dist laravel/lumen myapi

Swagger PHP の構成

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 形式に変換します。ここでのコントローラーとは、リクエスト処理メソッドを格納するクラスを指します。関連する詳細については、次のサンプル コードで説明します。

サンプル API の記述

この例では、TODO 項目の一覧表示、作成、更新、削除のための API 操作を含む、単純な TODO アプリケーションを実装します。

ルートの作成

まず、ルーティング ファイルに API ルートを定義します。 Lumen では、ルートは

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');

ここでは、list、create、update、delete の 4 つの操作に対応する 4 つのルートを定義します。このうち、

{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);
        }
    }
}

上記のコードでは、Lumen フレームワークの

Model メソッドを使用してデータベースに接続し、さまざまな HTTP リクエスト メソッドを通じて対応するタスク操作を実行します。

幸運なことに、コントローラーの作成には問題がなかったことに注意してください。何らかの理由でコントローラーが使用できない場合は、おそらく奇妙な奇妙な理由が考えられます。

オープン API 仕様の生成

これで、単純な API を定義し、オープン API 仕様を適用しました。次のコマンドを実行して、生成された仕様をターミナルに出力します。

php swagger.php

ターミナル出力は、API 定義を含む YAML ドキュメントになります。これをコピーして任意のテキスト エディタに貼り付けることができます。

次に、Swagger UI にアクセスして、Open API 仕様が生成されているかどうかを確認する必要があります。

composer require --dev zircote/swagger-ui-expressive

Swagger UI をインストールした後、

bootstrap/app.phpファイル Swagger UI ルートを定義します:

<?php

$app->group(['namespace' => 'ZircoteSwaggerExpressiveUi'], function() use ($app) {
    $app->get('/docs', 'Controller::getDocsAction');
});

上記の構成ファイルの後、

/docs ルートを通じて Swagger UI インターフェイスにアクセスし、API 定義が正しく表示されることを確認できます。

概要

この記事では、Open API 仕様の基本概念と、PHP で Open API 仕様を実装する方法を紹介します。 Lumen フレームワークと Swagger PHP ツールを組み合わせることで、仕様に準拠した API を簡単に作成し、対応する API ドキュメントとクライアント コードを生成できるため、API の開発効率と管理性が向上します。 Open API 仕様は、非常に便利な API 設計とドキュメント生成方法を提供しており、これにより API の使いやすさと使いやすさが大幅に向上し、開発者と企業間のさらなる協力と革新に役立ちます。

以上がPHP は、オープンソースの Open API 仕様と実践を実装しています。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。