apiboard / php-openapi
PHP 8的OpenAPI规范解析器。支持OAS 3.0和3.1。
2.1.0
2024-02-21 20:55 UTC
Requires
- php: >=8.1
- opis/json-schema: ^2.3
- symfony/filesystem: ^6.2||^7.0
- symfony/yaml: ^6.1||^7.0
Requires (Dev)
- laravel/pint: ^1.4
- pestphp/pest: ^1.22
- php-mock/php-mock: ^2.5
- spatie/invade: ^1.1
- symfony/var-dumper: ^6.1||^7.0
README
PHP 8的OpenAPI规范解析器。支持OAS 3.0和3.1。
特性
- 将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)。请参阅许可证文件以获取更多信息。