hmaus / drafter-php
drafter 二进制文件的 PHP 封装器
v6.1.1
2020-03-21 21:11 UTC
Requires
- php: >=5.6
- symfony/process: ^4|^5
Requires (Dev)
- codeclimate/php-test-reporter: ^0.3
- consolidation/robo: ^1.2.2
- hmaus/drafter-installer: ^1.0
- phpunit/phpunit: ^5.0
README
PHP 封装器,用于Drafter API Blueprint 解析器。
什么是 Drafter-php?
Drafter-php 允许您在您的 PHP 应用程序中使用 drafter API Blueprint 解析器。
简单来说:您可以将 API Blueprint 文件转换为解析结果。
API Blueprint 是一种基于 Markdown 的 Web 服务文档语言。
要求
- PHP 5.6 或更高版本
- Drafter 命令行工具
什么是什么是
Drafter 是一个用于解析 API Blueprint 的 C++ 工具。
Drafter-php 是围绕 Drafter 命令行工具 的 PHP 封装器。
安装
推荐通过 composer 安装 Drafter-php
$ composer require hmaus/drafter-php
这将安装应用程序的 PHP 包。
请注意,Drafter 包含在内。
使用 composer 安装 Drafter 命令行工具
Drafter-php 的用法
- 获取
\DrafterPhp\DrafterInterface
实现的实例,\DrafterPhp\Drafter
1.1 您需要将 drafter 二进制文件的路径传递给构造函数 1.2 建议使用依赖注入容器来解决这个问题 - 在您的
\DrafterPhp\Drafter
实例上设置输入文件和选项 2.1 Drafter-php 目前不支持直接将 blueprint 代码传递给 Drafter;它必须存储在文件中 - 运行您的命令
输入/输出示例
注意:drafter-php 不断言输出的结构。如果您在示例中看到与实际输出之间的差异,请参阅官方 drafter 文档。
给定此 api blueprint 源
# GET /message + Response 200 (text/plain) Hello World!
结果将类似(json refract)
{ "element": "parseResult", "content": [ { "element": "category", "meta": { "classes": [ "api" ], "title": "" }, "content": [ { "element": "category", "meta": { "classes": [ "resourceGroup" ], "title": "" }, "content": [ { "element": "resource", "meta": { "title": "" }, "attributes": { "href": "/message" }, "content": [ { "element": "transition", "meta": { "title": "" }, "content": [ { "element": "httpTransaction", "content": [ { "element": "httpRequest", "attributes": { "method": "GET" }, "content": [] }, { "element": "httpResponse", "attributes": { "statusCode": "200", "headers": { "element": "httpHeaders", "content": [ { "element": "member", "content": { "key": { "element": "string", "content": "Content-Type" }, "value": { "element": "string", "content": "text/plain" } } } ] } }, "content": [ { "element": "asset", "meta": { "classes": [ "messageBody" ] }, "attributes": { "contentType": "text/plain" }, "content": "Hello World!\n" } ] } ] } ] } ] } ] } ] } ] }
代码示例
发现错误?请随时 贡献
确保它正常工作
为了确保它正常工作,我们将向 Drafter 请求当前版本。
$version = $drafter ->version() ->run(); // Reset options on the command $drafter->resetOptions();
$version
应现在包含类似 v1.0.0
的字符串。如果有什么问题,最可能已抛出异常。
请注意,Drafter-php 被设计为保持其状态,运行
\DrafterPhp\DrafterInterface::resetOptions
以删除您刚刚设置的版本选项,以便在实例的下一个调用中使用。
将 your-service.apib 解析成 your-service.refract.json
请确保您的输入路径正确且可读,并且您的输出路径可写。
$drafter ->input('your-service.apib') ->format('json') ->type('refract') ->output('your-service.refract.json') ->run();
将 your-service.apib 解析成 your-service.ast.json
请确保您的输入路径正确且可读,并且您的输出路径可写。
$drafter ->input('your-service.apib') ->format('json') ->output('your-service.ast.json') ->run();
将 your-service.apib 解析成 PHP 数据结构
$refract = $drafter ->input('your-service.apib') ->format('json') ->run(); $phpObj = json_decode($refract); $phpArr = json_decode($refract, true);
将 your-service.apib 解析成 YAML 格式
$drafter ->input('your-service.apib') ->format('yaml') // optional as yaml is the default ->output('your-service.ast.yml') ->run();
在运行之前获取进程
$process = $drafter ->input('your-service.apib') ->format('json') ->output('your-service.refract.json') ->build(); // do stuff with the process $drafter ->run($process);
特性路线图
不要犹豫,贡献力量。
- 支持将原始API蓝图代码传递到
\DrafterPhp\DrafterInterface::input
,而不仅仅是文件路径
许可证
Drafter-php遵循MIT许可证 - 有关详细信息,请参阅LICENSE文件