私はいくつかのREST APIをLumenマイクロフレームワークで構築しましたが、それは正常に動作しています。Swaggerをそれに統合して、APIが将来の使用について十分に文書化されるようにしたいと思います。誰かがこれを実行しましたか?
Laravel Lumen 5.7をOpenApi 3.0仕様を使用してSwaggerで実行する手順(これにより、注釈の記述方法が決まり、swaggerドキュメントが生成されます)
私はそれを機能させるために、@ black-mambaの回答でこの調整に達しました。
1。 swagger-lume依存関係をインストールします(swaggerもインストールされます)
_composer require "darkaonline/swagger-lume:5.6.*"
_
2。 _bootstrap/app.php
_ファイルを編集
$app->withFacades();
がコメント化されていないことを確認してください(26行目あたり)Create Applicationセクションで、Register Container Bindingsセクションの前に以下を追加します
_$app->configure('swagger-lume');
_Register Service Providersセクションに追加
_$app->register(\SwaggerLume\ServiceProvider::class);
_
3。 swagger-lumeの構成ファイルを公開する
_php artisan swagger-lume:publish
_
4。コードに注釈を追加します
たとえば_app/Http/Controllers/Controller.php
_では、ドキュメントの一般的な部分を持つことができます
_<?php
namespace App\Http\Controllers;
use Laravel\Lumen\Routing\Controller as BaseController;
class Controller extends BaseController
{
/**
* @OA\Info(
* title="Example API",
* version="1.0",
* @OA\Contact(
* email="[email protected]",
* name="Support Team"
* )
* )
*/
}
_
そして、各コントローラーの内部では、各パブリックメソッドの上に適切なアノテーションが必要です。
_<?php
namespace App\Http\Controllers;
class ExampleController extends Controller
{
/**
* @OA\Get(
* path="/sample/{category}/things",
* operationId="/sample/category/things",
* tags={"yourtag"},
* @OA\Parameter(
* name="category",
* in="path",
* description="The category parameter in path",
* required=true,
* @OA\Schema(type="string")
* ),
* @OA\Parameter(
* name="criteria",
* in="query",
* description="Some optional other parameter",
* required=false,
* @OA\Schema(type="string")
* ),
* @OA\Response(
* response="200",
* description="Returns some sample category things",
* @OA\JsonContent()
* ),
* @OA\Response(
* response="400",
* description="Error: Bad request. When required parameters were not supplied.",
* ),
* )
*/
public function getThings(Request $request, $category)
{
$criteria= $request->input("criteria");
if (! isset($category)) {
return response()->json(null, Response::HTTP_BAD_REQUEST);
}
// ...
return response()->json(["thing1", "thing2"], Response::HTTP_OK);
}
}
_
5。 Swaggerドキュメントを生成
_php artisan swagger-lume:generate
_
ドキュメントを更新するたびにこれを実行します
見る:
使い方を覚えるのに苦労しました。ここで、それを機能させるために行ったいくつかのことを共有します。
端末で次のコマンドを実行します。
composer require "darkaonline/swagger-lume:5.5.*"
または、これが機能しない場合は、リンクされたリポジトリの古いバージョン
次に、リポジトリから次の手順に従います。
Bootstrap/app.phpファイルを開き、「アプリケーションの作成」セクションで次の行(26行目付近)のコメントを外します。
$app->withFacades(); add this line before Register Container Bindings section: $app->configure('swagger-lume'); add this line in Register Service Providers section: $app->register(\SwaggerLume\ServiceProvider::class);
次に、YAMLまたはJSONの代わりにプロジェクトの注釈を使用する必要があります 詳細 アプリフォルダーにAnnotation.php
ファイルを作成し、次のサンプルを追加します
/**
* @SWG\Swagger(
* basePath="/",
* schemes={"http"},
* @SWG\Info(
* version="1.0.0",
* title="HAVE MY BOOKS",
* @SWG\Contact(
* email="[email protected]"
* ),
* )
* )
*/
/**
* @SWG\Get(
* path="/",
* summary="Version",
* @SWG\Response(
* response=200,
* description="Working"
* ),
* @SWG\Response(
* response="default",
* description="an ""unexpected"" error"
* )
* )
*/
次に実行します
php artisan swagger-lume:publish
次に実行します
php artisan swagger-lume:generate
これにより、localhost:8000またはLumenサービスを提供している任意のポートからアクセスできるJSONが生成されます
注:リポジトリで問題を作成した後、アクセスするには、使用または使用してサービスを実行する必要があることがわかりました
php -S localhost:8000 public/index.php
PHP php -S localhost:8000 public