在现有 PHP 项目中设置 Swagger

Setting up Swagger in an existing PHP project

(请耐心等待,我从来没有设置过这样的东西,所以我在黑暗中摸索)

我观看了一些视频并阅读了有关安装 swagger-php that I found here 的文档,并且正在尝试设置一些基本的文档。

我在 /application/modules/apiv1/documentation 中创建了 api.php

<?php
require("library/vendor/autoload.php");
$openapi = \OpenApi\Generator::scan($_SERVER['DOCUMENT_ROOT'] . '/modules/apiv1/controllers');
header('Content-Type: application/json');
echo $openapi->toJson();

并在 /application/modules/apiv1/controllers 内有一个控制器 (LocationController)。我用作测试假人的控制器操作之一是

/**
 * @OA\Get(
 *     path="/modules/apiv1/controllers/location/get",
 *     @OA\Response(response="200", description="An example resource")
 * )
 */
public function getAction()
{...}

我接下来要做的是在我的本地环境中实际查看生成的文档,但我不知道如何查看它,所以问题是:我是否需要进行更多设置才能成为可以查看吗?我已经完成了 zircote github: composer global require zircote/swagger-php 上显示的作曲家安装,但我不确定我的下一步是什么,而且我似乎找不到任何“如何为傻瓜设置 swagger”东西等等

  • 下载 Swagger-Php 使用 Composer
  • 添加注释以生成文档
  • 生成 Swagger JSON 文件
  • 下载 Swagger-UI 包到您的项目
  • 将 Swagger-UI 连接到您的代码

更多信息在此link

swagger-php 生成一个 JSON 文件,您可以将其转换为 YAML 或保留在 JSON 中。 该文件是一个 OpenAPI 描述文档,您可以将其与任何兼容的查看器一起使用。有关 OpenAPI standard/format 的更多信息,请阅读 here

最常见的是 swagger-ui which can be used locally or in the cloud (by uploading your definition document). There are others such as stoplight,它是基于云的。

下面答案中提供的link(here)其实很好的解释了如何get swagger-ui 运行如果你不放心与 JavaScript 生态系统。