hmaus/drafter-php

drafter 二进制文件的 PHP 封装器

v6.1.1 2020-03-21 21:11 UTC

This package is auto-updated.

Last update: 2024-09-22 06:45:47 UTC


README

PHP 封装器,用于Drafter API Blueprint 解析器。

Minimum PHP Version codecov.io

什么是 Drafter-php?

Drafter-php 允许您在您的 PHP 应用程序中使用 drafter API Blueprint 解析器。

简单来说:您可以将 API Blueprint 文件转换为解析结果。

API Blueprint 是一种基于 Markdown 的 Web 服务文档语言。

要求

什么是什么是

Drafter 是一个用于解析 API Blueprint 的 C++ 工具。
Drafter-php 是围绕 Drafter 命令行工具 的 PHP 封装器。

安装

推荐通过 composer 安装 Drafter-php

$ composer require hmaus/drafter-php

这将安装应用程序的 PHP 包。
请注意,Drafter 包含在内

使用 composer 安装 Drafter 命令行工具

前往 hmaus/drafter-installer

Drafter-php 的用法

  1. 获取 \DrafterPhp\DrafterInterface 实现的实例,\DrafterPhp\Drafter 1.1 您需要将 drafter 二进制文件的路径传递给构造函数 1.2 建议使用依赖注入容器来解决这个问题
  2. 在您的 \DrafterPhp\Drafter 实例上设置输入文件和选项 2.1 Drafter-php 目前不支持直接将 blueprint 代码传递给 Drafter;它必须存储在文件中
  3. 运行您的命令

输入/输出示例

注意: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文件