zircote/swagger-php

swagger-php - 使用phpdoc注释生成RESTful API的交互式文档

4.10.6 2024-07-26 03:04 UTC

README

Build Status Total Downloads License

swagger-php

使用 OpenAPI 标注(自版本4.8起为可选;如果需要,除了swagger.php外,还必须安装doctrine/annotations库)或PHP属性来生成RESTful API的交互式文档。

有关支持的所有标注的完整列表,请参阅OpenApi\Annotations命名空间文档网站

功能

  • 兼容OpenAPI 3.03.1 规范。
  • 从代码和现有的phpdoc标注中提取信息。
  • 提供命令行界面。
  • 文档网站带有入门指南。
  • 出色的错误报告(带有提示和上下文)
  • 自PHP 8.1起,所有标注也作为PHP属性提供

OpenAPI版本支持

swagger-php允许生成针对OpenAPI 3.0.0OpenAPI 3.1.0的规范。默认情况下,规范将版本为3.0.0。可以使用命令行选项--version将其更改为3.1.0

程序上,可以使用Generator::setVersion()方法更改版本。

要求

swagger-php要求至少PHP 7.2来使用标注,并使用PHP 8.1来使用属性。

安装(使用Composer

composer require zircote/swagger-php

要从任何地方使用命令行安装swagger-php,请全局安装它,并确保将~/.composer/vendor/bin目录添加到您的PATH中,以便系统可以找到openapi可执行文件。

composer global require zircote/swagger-php

doctrine/annotations

自版本4.8起,doctrine annotations库是可选的不再默认安装

要使用PHPDoc标注,则需要在此之上安装它

composer require doctrine/annotations

如果您的代码使用PHPDoc标注,则也需要安装此库

composer require doctrine/annotations

用法

将标注添加到您的php文件中。

/**
 * @OA\Info(title="My First API", version="0.1")
 */

/**
 * @OA\Get(
 *     path="/api/resource.json",
 *     @OA\Response(response="200", description="An example resource")
 * )
 */

请访问文档网站中的入门指南或查看示例目录以获取更多示例。

从PHP使用

生成始终是最新的文档。

<?php
require("vendor/autoload.php");
$openapi = \OpenApi\Generator::scan(['/path/to/project']);
header('Content-Type: application/x-yaml');
echo $openapi->toYaml();

有关如何使用Generator类的说明,请参阅Generator参考

从命令行界面使用

可以使用命令行界面openapi将文档生成到静态yaml/json文件。

./vendor/bin/openapi --help

从版本4开始,在命令行上使用的默认分析器是新的ReflectionAnalyser

使用--legacy标志(-l),仍然可以使用旧的TokenAnalyser

从反序列化器使用

从json字符串生成OpenApi注解对象,这使得以编程方式操作对象更加容易。

<?php

use OpenApi\Serializer;

$serializer = new Serializer();
$openapi = $serializer->deserialize($jsonString, 'OpenApi\Annotations\OpenApi');
echo $openapi->toJson();

贡献

更多关于OpenApi & Swagger的信息