我在Lumen微框架中构建了一些REST API,它工作正常。现在我想将Swagger集成到其中,以便API在未来的使用中得到很好的记录。有没有人这样做过?
答案 0 :(得分:6)
使用 OpenApi 3.0 规范进行摇摇欲坠的
为了使它起作用,我在@ 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。生成招摇的文档
php artisan swagger-lume:generate
每次更新文档时都运行此
请参阅:
答案 1 :(得分:2)
我很难学习如何使用它。在这里,我将分享一些我为使其工作而做的事情
在终端中运行此命令:
composer require "darkaonline/swagger-lume:5.5.*"
如果这对您不起作用,则来自回购链接的旧版本
然后从回购中按照以下步骤操作:
打开bootstrap / app.php文件并: 在Create The Application中取消注释该行(在第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
For more
在app文件夹中创建Annotation.php
文件,添加以下示例
/**
* @SWG\Swagger(
* basePath="/",
* schemes={"http"},
* @SWG\Info(
* version="1.0.0",
* title="HAVE MY BOOKS",
* @SWG\Contact(
* email="ishumahajan94@gmail.com"
* ),
* )
* )
*/
/**
* @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
这会生成JSON,可以从您的localhost:8000或您为LUMEN服务提供的任何端口访问
注意:在回购中创建问题后,我发现要访问您需要提供服务或运行
php -S localhost:8000 public/index.php
由于php -S localhost:8000 public