ホームページ >バックエンド開発 >PHPチュートリアル >PHP で Swagger を使用して API ドキュメントを生成する方法

PHP で Swagger を使用して API ドキュメントを生成する方法

WBOY
WBOYオリジナル
2023-06-17 10:40:391340ブラウズ

Web アプリケーションの継続的な開発により、API は最新の Web アプリケーション開発の標準の 1 つになりました。ただし、API の数と複雑さが増加するにつれて、API の保守と文書化はますます複雑になります。この問題を解決するために、Swagger が誕生しました。これは API ドキュメントを生成するためのツールであり、開発者が API の保守とドキュメント化を容易にすると同時に、視覚的なドキュメントやその他のさまざまな機能も提供します。この記事では、PHP で Swagger を使用して API ドキュメントを生成する方法について説明します。

まず、Swagger をインストールする必要があります。 Swagger には多くのバージョンと実装がありますが、ここでは Swagger-php を使用します。これは、Swagger を PHP コードに簡単に統合できるオープン ソースの PHP ライブラリです。 Composer を使用してプロジェクトに Swagger-php をインストールできます。

composer require zircote/swagger-php

Swagger-php をインストールしたら、API の Swagger 仕様の作成を開始できます。 Swagger 仕様は、エンドポイント URL、リクエストおよびレスポンス パラメータ、データ モデル、エラー コードなど、API の詳細をすべて記述する JSON または YAML ファイルです。 Swagger-php では、PHP アノテーションを使用して仕様を記述することができます。簡単な例を見てみましょう:

/**
 * @OAInfo(title="我的API", version="1.0")
 */

/**
 * @OAGet(
 *     path="/users",
 *     summary="获取所有用户",
 *     @OAResponse(response="200", description="成功响应")
 * )
 */

/**
 * @OAGet(
 *     path="/users/{id}",
 *     summary="获取用户详情",
 *     @OAParameter(name="id", in="path", required=true, description="用户ID"),
 *     @OAResponse(response="200", description="成功响应"),
 *     @OAResponse(response="404", description="用户不存在")
 * )
 */

この例では、@OA アノテーションを使用して Swagger 仕様を記述しました。 @OA は、Info、Get、Response、Parameter などのさまざまなタイプの Swagger 要素を定義するために使用される Swagger-php ライブラリ内の名前空間です。 @OAInfo アノテーションを使用して、タイトルやバージョンなどの API の基本情報を記述することができます。 @OAGet アノテーションでは、/users と /users/{id} という 2 つのエンドポイントを定義します。リクエストパラメータとレスポンスを記述し、成功とエラーのレスポンスコードを指定します。これはほんの小さな例ですが、他の @OA アノテーションを使用してより複雑な Swagger 仕様を記述したり、API の認証と認可を記述することもできます。

Swagger 仕様を作成したら、Swagger-php を使用してそれをビジュアル ドキュメントに変換できます。このために、Swagger 仕様をレンダリングするための HTML、CSS、および JavaScript ライブラリである Swagger-ui を使用できます。 PHP の Swagger-ui-php パッケージを使用して、Swagger-ui を統合できます。 Composer を使用してプロジェクトに Swagger-ui-php をインストールできます。

composer require swagger-api/swagger-ui

Swagger-ui-php をインストールしたら、Swagger-ui を PHP アプリケーションに統合できます。次の行を HTML コードに追加して Swagger-ui をロードできます:

<link rel="stylesheet" type="text/css" href="/vendor/swagger-api/swagger-ui/dist/swagger-ui.css">
<div id="swagger-ui"></div>
<script src="/vendor/swagger-api/swagger-ui/dist/swagger-ui-bundle.js"></script>
<script src="/vendor/swagger-api/swagger-ui/dist/swagger-ui-standalone-preset.js"></script>
<script>
  window.onload = function() {
    // 使用来自后端的Swagger JSON文件构造请求
    SwaggerUIBundle({
      url: "/api/swagger.json",
      dom_id: '#swagger-ui',
      presets: [
        SwaggerUIBundle.presets.apis,
        SwaggerUIStandalonePreset // 用于额外的UI依赖
      ],
      layout: "StandaloneLayout"
    })
  }
</script>

この例では、Swagger-ui の CSS ファイルと JavaScript ファイルをロードし、それらを DIV の -ui" ID でレンダリングします。要素。 JavaScript コードを使用してバックエンドから Swagger JSON ファイルを読み込み、SwaggerUIBundle を使用してそれを美しいドキュメントに変換します。

最後に、Swagger-ui が Swagger 仕様を読み込むために、Swagger JSON ファイルを返すルートをアプリケーションに追加する必要があります。

use OpenApiAnnotations as OA;

$app->get('/api/swagger.json', function() use ($app) {
  $openapi = OpenApiscan([__DIR__ . '/routes']);
  return $app->json(json_decode($openapi->toJson()));
});

// 或者用这种方式

/**
 * @OAServer(url="http://localhost:8000")
 */

/**
 * @OAInfo(title="我的API", version="1.0")
 */

/**
 * @OAGet(
 *     path="/users",
 *     summary="获取所有用户",
 *     @OAResponse(response="200", description="成功响应")
 * )
 */

/**
 * @OAGet(
 *     path="/users/{id}",
 *     summary="获取用户详情",
 *     @OAParameter(name="id", in="path", required=true, description="用户ID"),
 *     @OAResponse(response="200", description="成功响应"),
 *     @OAResponse(response="404", description="用户不存在")
 * )
 */
$app->get('/api/swagger.json', function() use ($app) {
  $openapi = OpenApiscan([__DIR__ . '/routes']);
  return $app->json(json_decode($openapi->toJson()));
});

この例では、前の例とは異なり、OpenApi アノテーションを使用して Swagger 仕様を記述します。また、Swagger JSON ファイルを返すルートも追加しました。 OpenApiscan PHP 関数を使用してルート フォルダーをスキャンし、API 定義を Swagger JSON オブジェクトに変換します。その後、それが JSON 文字列に変換されてクライアントに返されます。

この記事では、Swagger-php と Swagger-ui を使用して PHP で API ドキュメントを生成する方法を学びました。 API の数と複雑さが増すにつれて、Swagger を使用すると、視覚的な API ドキュメントやその他のさまざまな機能を提供しながら、API の維持と文書化がより簡単になります。 PHP アノテーションを使用して Swagger 仕様を記述することにより、ドキュメントを手動で作成する必要がなくなり、コードがより明確になり、保守が容易になります。

以上がPHP で Swagger を使用して API ドキュメントを生成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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