ホームページ >PHPフレームワーク >Swoole >Hyperf フレームワークを使用して API ドキュメントを生成する方法

Hyperf フレームワークを使用して API ドキュメントを生成する方法

WBOY
WBOYオリジナル
2023-10-20 08:24:34842ブラウズ

Hyperf フレームワークを使用して API ドキュメントを生成する方法

Hyperf フレームワークを使用して API ドキュメントを生成する方法

はじめに:
インターネットの急速な発展に伴い、API (アプリケーション プログラミング インターフェイス) は不可欠なものになりました。さまざまなアプリケーションを接続して、データの共有と対話を実現できます。開発チームにとって、優れた API ドキュメントは、チームのコラボレーションを確実にするための重要なツールです。この記事では、Hyperf フレームワークを使用して明確で使いやすい API ドキュメントを生成する方法を紹介し、具体的なコード例を通じてそれを示します。

1. 準備作業
Hyperf フレームワークを使用して API ドキュメントを生成する前に、次の準備を行う必要があります:

  1. Hyperf フレームワークをインストールします: Composer を使用します。 Hyperf フレームワークを簡単かつ迅速にインストールするためのツール。
  2. ルーティングの構成: config/routes.php ファイルでルーティング情報を構成します。
  3. API ドキュメント生成ツールをインストールする: Hyperf フレームワークには、Swaggervel と呼ばれる公式に推奨される API ドキュメント生成ツールがあり、Composer を通じてインストールできます。

2. API ドキュメントの生成
以下は、Hyperf フレームワークを使用して API ドキュメントを生成するための具体的な手順とコード例です:

  1. Swaggervel のインストール

    composer require overtrue/laravel-swagger
  2. ドキュメント ジェネレーター クラスの作成
    app/Doc フォルダーの下に DocGenerator.php ファイルを作成し、その中に次のコードを記述します:

    <?php
    
    namespace AppDoc;
    
    use HyperfValidationContractValidatorFactoryInterface;
    use OvertrueLaravelSwaggerRequest;
    use OvertrueLaravelSwaggerSwagger as BaseSwagger;
    
    class DocGenerator
    {
     protected $validator;
    
     public function __construct(ValidatorFactoryInterface $validator)
     {
         $this->validator = $validator;
     }
    
     public function generate()
     {
         $swagger = new BaseSwagger([
             'swagger' => '2.0',
             'info' => [
                 'title' => config('app.name'),
                 'version' => config('app.version'),
             ],
         ]);
    
         $routes = app('router')->getRoutes();
    
         foreach ($routes as $route) {
             $methods = $route->methods();
             $path = $route->uri();
    
             foreach ($methods as $method) {
                 $request = new Request([
                     'method' => $method,
                     'uri' => $route->uri(),
                 ]);
    
                 $docBlock = $route->getAction()['doc'] ?? null; // 从Route中获取注释
    
                 $parameters = [];
    
                 $validator = $this->validator->make($request->all(), $docBlock ? $docBlock['rules'] : []);
    
                 foreach ($validator->failed() as $field => $messages) {
                     $parameters[] = [
                         'name' => $field,
                         'in' => 'query',
                         'required' => true,
                         'description' => implode(', ', $messages),
                     ];
                 }
    
                 $responses = [];
    
                 $responses[] = [
                     'statusCode' => 200,
                     'description' => '请求成功',
                     'data' => [
                         'type' => 'object',
                         'properties' => [
                             'code' => [
                                 'type' => 'integer',
                             ],
                             'message' => [
                                 'type' => 'string',
                             ],
                             'data' => [
                                 'type' => 'object',
                                 'nullable' => true,
                             ],
                         ],
                     ],
                 ];
    
                 $swagger->addPath($path, $method, [
                     'parameters' => $parameters,
                     'responses' => $responses,
                 ]);
             }
         }
    
         return $swagger->toYaml();
     }
    }
  3. アクセス ルーティングを構成する
    次のルーティング構成を config/routes.php ファイルに追加します。

    use AppDocDocGenerator;
    
    Router::get('/api/docs', function (DocGenerator $docGenerator) {
     return $docGenerator->generate();
    });
  4. API ドキュメントを生成します。
    ターミナルで次のコマンドを実行します。 API ドキュメントを生成するには:

    php bin/hyperf.php serve

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

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