laminas-api-tools/api-tools-documentation-swagger

Laminas API Tools API Swagger 文档模块

1.7.0 2023-07-12 20:36 UTC

README

Build Status

🇷🇺 俄罗斯公民

我们,Laminas 的参与者,来自不同的国家。我们中许多人既有在俄罗斯的,也有在乌克兰的朋友、亲戚和同事。我们中的一些人出生在俄罗斯。我们中的一些人目前居住在俄罗斯。我们中的一些人的祖父母在二战中与法西斯作战。在这里,没有人支持法西斯主义。

我们中的一位成员有一位乌克兰亲戚,她与儿子一起逃离了家园。火车因前方道路上的轰炸而延误。我们有一些朋友在防空洞里躲藏。我们在空袭后焦急地追踪他们的消息,空袭无差别地袭击医院、学校、幼儿园和住宅。我们不是从任何媒体上得知的。这是我们亲身体验到的。

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

🇺🇸 致俄罗斯公民

我们来自世界各地。我们中许多人既有在俄罗斯的,也有在乌克兰的朋友、家人和同事。我们中的一些人出生在俄罗斯。我们中的一些人目前居住在俄罗斯。我们中的一些人的祖父母在二战中与纳粹作战。在这里,没有人支持法西斯主义。

我们团队中的一位成员有一位乌克兰亲戚,她与儿子一起逃离了家园。火车因前方道路上的轰炸而延误。我们有一些朋友在防空洞里躲藏。我们在空袭后焦急地追踪他们的消息,空袭无差别地袭击医院、学校、幼儿园和住宅。我们不是从任何媒体上得知的。这是我们亲身体验到的。

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

简介

此模块为 Laminas API Tools 提供了通过 Swagger UI 显示 API 文档的能力。

在启用此模块并访问 URI 路径 /api-tools/swagger 后,Swagger UI 立即可用。

除了提供 HTML UI 之外,此模块还连接到主要的 Laminas API Tools 文档资源(位于路径 /api-tools/documentation),以便允许返回 application/vnd.swagger+json 媒体类型的文档有效负载;此资源为 Swagger UI 提供数据。您可以通过传递媒体类型 application/vnd.swagger+json 作为 Accept 标头的值,通过路径 /api-tools/documentation/:module/:service 访问此表示。

要求

请参阅 composer.json 文件。

安装

运行以下 composer 命令

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

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

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

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

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

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

laminas-component-installer

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

路由

/api-tools/swagger

显示Swagger UI JavaScript应用程序。

资源:/api-tools-documentation-swagger/

各种CSS、图像和JavaScript库,用于提供Swagger UI客户端应用程序。

配置

系统配置

以下内容是确保模块在Laminas和/或Laminas API Tools启用应用程序中工作所必需的

namespace Laminas\ApiTools\Documentation\Swagger;

return [
    'router' => [
        'routes' => [
            'api-tools' => [
                'child_routes' => [
                    'swagger' => [
                        'type' => 'segment',
                        'options' => [
                            'route'    => '/swagger',
                            'defaults' => [
                                'controller' => SwaggerUi::class,
                                'action'     => 'list',
                            ],
                        ],
                        'may_terminate' => true,
                        'child_routes' => [
                            'api' => [
                                'type' => 'segment',
                                'options' => [
                                    'route' => '/:api',
                                    'defaults' => [
                                        'action' => 'show',
                                    ],
                                ],
                                'may_terminate' => true,
                            ],
                        ],
                    ],
                ],
            ],
        ],
    ],

    'service_manager' => [
        'factories' => [
            SwaggerViewStrategy::class => SwaggerViewStrategyFactory::class,
        ],
    ],

    'controllers' => [
        'factories' => [
            SwaggerUi::class => SwaggerUiControllerFactory::class,
        ],
    ],

    'view_manager' => [
        'template_path_stack' => [
            'api-tools-documentation-swagger' => __DIR__ . '/../view',
        ],
    ],

    'asset_manager' => [
        'resolver_configs' => [
            'paths' => [
                __DIR__ . '/../asset',
            ],
        ],
    ],

    'api-tools-content-negotiation' => [
        'accept_whitelist' => [
            'Laminas\ApiTools\Documentation\Controller' => [
                0 => 'application/vnd.swagger+json',
            ],
        ],
        'selectors' => [
            'Documentation' => [
                ViewModel::class => [
                    'application/vnd.swagger+json',
                ],
            ],
        ],
    ],
];

Laminas事件

监听器

Laminas\ApiTools\Documentation\Swagger\Module

此监听器在优先级100时附加到MvcEvent::EVENT_RENDER事件。它的目的是在控制器响应为Laminas\ApiTools\Documentation\Swagger\ViewModel视图模型的情况下(可能基于Accept媒体类型选择的内容协商视图模型),有条件地附加一个视图策略到视图系统。

Laminas服务

视图模型

Laminas\ApiTools\Documentation\Swagger\ViewModel

此视图模型负责将可用的Laminas\ApiTools\Documentation模型转换为Swagger特定的模型,并将它们进一步转换为数组,以便稍后作为JSON进行渲染。