rnd-cosoft/api-tools-documentation

Laminas API Tools API 文档模块


README

Build Status

🇷🇺 俄罗斯公民

我们,Laminas的参与者,来自不同的国家。我们中许多人都有在俄罗斯和乌克兰的朋友、亲戚和同事。我们中的一些人生于俄罗斯。我们中的一些人现在住在俄罗斯。我们中的一些人的祖父母曾在第二次世界大战中与法西斯作战。这里没有人支持法西斯主义。

我们中的一位成员有一位乌克兰亲戚,她和儿子一起逃离了家园。火车因前方道路上的轰炸而延误。我们有朋友在防空洞里躲避。我们在空袭后焦急地等待他们的消息,空袭不分青红皂白地袭击医院、学校、幼儿园和住宅。我们不是从任何媒体上得知这些消息的。这是我们亲身经历的事。

您信任我们足够使用我们的程序,我们请求您再次信任我们。我们需要您的帮助。走出家门,抗议这场无意义的战争。停止杀戮。说“不,战争!”

🇺🇸 致俄罗斯公民

我们Laminas的成员来自世界各地。我们中许多人都有在俄罗斯和乌克兰的朋友、家人和同事。我们中的一些人生于俄罗斯。我们中的一些人现在住在俄罗斯。我们中的一些人的祖父母曾在第二次世界大战中与纳粹作战。这里没有人支持法西斯主义。

我们团队的一员有一位乌克兰亲戚,她和儿子一起逃离了家园。火车因前方道路上的轰炸而延误。我们有朋友在防空洞里躲避。我们在空袭后焦急地等待他们的消息,空袭不分青红皂白地袭击医院、学校、幼儿园和住宅。我们不是从任何媒体上得知这些消息的。这是我们亲身经历的事。

您信任我们足够使用我们的软件。我们请求您信任我们说出真相。我们需要您的帮助。走出家门,抗议这场不必要的战争。停止杀戮。说“停止战争!”

简介

此Laminas模块可以与Laminas API Tools结合使用,以

  • 提供所有捕获的文档信息的对象模型,包括
    • 所有可用的API。
    • 每个API中可用的所有服务
    • 每个服务可用的所有操作
    • 每个可用操作所需的/预期的AcceptContent-Type请求头,以及预期的Content-Type响应头。
    • 每个服务的配置字段。
  • 提供一个可配置的MVC端点以返回文档。
    • 默认情况下,文档将通过HTML或序列化的JSON提供。
    • 最终用户可以通过内容协商配置其他/附加格式。

此模块通过提供端点(/api-tools/documentation[/:api[-v:version][/:service]])连接到上述所有用例,使用内容协商提供HTML和JSON表示。

要求

请参阅composer.json文件。

安装

运行以下composer命令

$ composer require laminas-api-tools/api-tools-documentation

或者,手动将以下内容添加到您的composer.json文件中的require部分

"require": {
    "laminas-api-tools/api-tools-documentation": "^1.2-dev"
}

然后运行composer update以确保模块已安装。

最后,将模块名称添加到您的项目配置文件config/application.config.php中的modules键下

return [
    /* ... */
    'modules' => [
        /* ... */
        'Laminas\ApiTools\Documentation',
    ],
    /* ... */
];

laminas-component-installer

如果您使用laminas-component-installer,该插件会为您将api-tools-documentation安装为一个模块。

配置

用户配置

此模块不使用任何用户配置。

系统配置

以下配置由模块定义,以确保在Laminas MVC应用程序中运行。

namespace Laminas\ApiTools\Documentation;

use Laminas\ServiceManager\Factory\InvokableFactory;
use Laminas\View\Model\ViewModel;

return [
    'router' => [
        'routes' => [
            'api-tools' => [
                'child_routes' => [
                    'documentation' => [
                        'type' => 'segment',
                        'options' => [
                            'route'    => '/documentation[/:api[-v:version][/:service]]',
                            'constraints' => [
                                'api' => '[a-zA-Z][a-zA-Z0-9_.]+',
                            ],
                            'defaults' => [
                                'controller' => Controller::class,
                                'action'     => 'show',
                            ],
                        ],
                    ],
                ],
            ],
        ],
    ],
    'service_manager' => [
        'factories' => [
            ApiFactory::class => Factory\ApiFactoryFactory::class,
        ],
    ],
    'controllers' => [
        'factories' => [
            Controller::class => ControllerFactory::class,
        ],
    ],
    'api-tools-content-negotiation' => [
        'controllers' => [
            Controller::class => 'Documentation',
        ],
        'accept_whitelist' => [
            Controller::class => [
                0 => 'application/vnd.swagger+json',
                1 => 'application/json',
            ],
        ],
        'selectors' => [
            'Documentation' => [
                ViewModel::class => [
                    'text/html',
                    'application/xhtml+xml',
                ],
                JsonModel::class => [
                    'application/json',
                ],
            ],
        ],
    ],
    'view_helpers' => [
        'aliases' => [
            'agacceptheaders'         => View\AgAcceptHeaders::class,
            'agAcceptHeaders'         => View\AgAcceptHeaders::class,
            'agcontenttypeheaders'    => View\AgContentTypeHeaders::class,
            'agContentTypeHeaders'    => View\AgContentTypeHeaders::class,
            'agservicepath'           => View\AgServicePath::class,
            'agServicePath'           => View\AgServicePath::class,
            'agstatuscodes'           => View\AgStatusCodes::class,
            'agStatusCodes'           => View\AgStatusCodes::class,
            'agtransformdescription'  => View\AgTransformDescription::class,
            'agTransformDescription'  => View\AgTransformDescription::class,
        ],
        'factories' => [
            View\AgAcceptHeaders::class        => InvokableFactory::class,
            View\AgContentTypeHeaders::class   => InvokableFactory::class,
            View\AgServicePath::class          => InvokableFactory::class,
            View\AgStatusCodes::class          => InvokableFactory::class,
            View\AgTransformDescription::class => InvokableFactory::class,
        ],
    ],
    'view_manager' => [
        'template_path_stack' => [
            __DIR__ . '/../view',
        ],
    ],
];

Laminas事件

此模块没有事件或监听器。

Laminas服务

视图助手

以下视图助手列表有助于将API文档模型呈现到视图脚本中。

  • Laminas\ApiTools\Documentation\View\AgAcceptHeaders(又名agAcceptHeaders),用于创建一个HTML转义后的Accept头列表。
  • Laminas\ApiTools\Documentation\View\AgContentTypeHeaders(又名agContentTypeHeaders),用于创建一个HTML转义后的Content-Type头列表。
  • Laminas\ApiTools\Documentation\View\AgServicePath(又名agServicePath),用于创建服务路径的配置的HTML视图表示。
  • Laminas\ApiTools\Documentation\View\AgStatusCodes(又名agStatusCodes),用于创建状态代码及其消息的转义列表。
  • Laminas\ApiTools\Documentation\View\AgTransformDescription(又名agTransformDescription),用于将文本描述转换为Markdown。

工厂

Laminas\ApiTools\Documentation\ApiFactory

ApiFactory服务能够生成请求的API文档的对象图表示。此对象图将由以下类型组成:

  • Laminas\ApiTools\Documentation\Api:API的根节点。
  • Laminas\ApiTools\Documentation\Services:API中的服务数组(服务可以是REST或RPC风格的服务之一)。
  • Laminas\ApiTools\Documentation\Operations:服务中的操作数组。
  • Laminas\ApiTools\Documentation\Fields:服务的字段数组。