使用 OpenApi 3.0 规范的 Laravel Lumen 5.7 和 swagger 遵循的步骤(这控制了您编写注释的方式,以便生成 swagger 文档)
这些步骤是不久前编写的,但它们仍然适用于 Laravel Lumen 6.X、7.X 和 8.X
我在@black-mamba 答案上进行了调整以使其正常工作。
1.安装 swagger-lume 依赖项(也安装 swagger)
composer require "darkaonline/swagger-lume:5.6.*"
2。编辑bootstrap/app.php文件
确保$app->withFacades(); 没有被注释(大约第 26 行)
在创建应用程序部分在注册容器绑定部分之前添加以下内容
$app->configure('swagger-lume');
在注册服务提供商部分添加
$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="support@example.com",
* 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
每次更新文档时运行它
见: