apiboard/php-openapi

PHP 8的OpenAPI规范解析器。支持OAS 3.0和3.1。

2.1.0 2024-02-21 20:55 UTC

This package is auto-updated.

Last update: 2024-09-21 22:22:29 UTC


README

PHP 8的OpenAPI规范解析器。支持OAS 3.0和3.1。

Latest Version on Packagist PHP from Packagist CI

特性

  • 将OpenAPI文件解析为PHP对象以便在代码中进行交互
  • 验证OpenAPI文件是否与官方的JSON-schema描述相符
  • 解析外部和内部引用

安装

composer require apiboard/php-openapi

使用

您可以直接通过OpenAPI::class与这个库交互。

$openAPI = new OpenAPI();

此类可选地接受一个实现了Apiboard\OpenAPI\Contents\Retriever::class的实现,该实现将用于检索文件内容。默认情况下,将使用本地文件系统来检索文件内容。

解析

您可以通过传递文件的路径到parse()来解析文件的内容。这将尝试检索文件的内容并解析任何外部引用。

它返回一个表示OAS文档结构的PHP对象,可以在代码中使用。

$document = $openAPI->parse('/path/to/my-oas.json');

$document->openapi(); // 3.1.0

验证

您可以直接将文件的内容与官方的OpenAPI JSON-schema描述进行验证。它返回在验证过程中发生的可能错误数组。

$errors = $openAPI->validate('/path/to/my-oas.yaml');

⚠️ 对于OAS 3.1的验证不检查OpenAPI文档中的任何JSON Schema,因为它允许您使用您选择的任何JSON Schema方言!

解析

您可以解析外部和内部引用。它返回一个包含解析内容的PHP对象。

$contents = $openAPI->resolve('/path/to/my-oas.json');

$document = new Apiboard\OpenAPI\Structure\Document($contents);

在解析引用时,默认情况下将从前端的文件系统检索内容。您可以通过传递一个实现了Apiboard\OpenAPI\Contents\Retriever接口的自定义类来覆盖检索文件内容的方式。

$customRetriever = new MyCustomRetriever();
$openAPI = new OpenAPI($customRetriever);

$openAPI->resolve('/path/to/my-oas.json');

循环引用在递归两次后被视为内部引用,这是为了避免无限递归。

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。