laminas-api-tools / api-tools-documentation-swagger
Laminas API Tools API Swagger 文档模块
Requires
- php: ~8.0.0 || ~8.1.0 || ~8.2.0
- laminas-api-tools/api-tools-api-problem: ^1.6
- laminas-api-tools/api-tools-content-negotiation: ^1.8
- laminas-api-tools/api-tools-documentation: ^1.6
- laminas/laminas-eventmanager: ^3.2
- laminas/laminas-mvc: ^2.7.15 || ^3.0.4
- laminas/laminas-servicemanager: ^3.11
- laminas/laminas-view: ^2.8.1
Requires (Dev)
- laminas/laminas-coding-standard: ~2.3
- laminas/laminas-http: ^2.5.4
- laminas/laminas-stdlib: ^2.7.8 || ^3.0.1
- phpunit/phpunit: ^9.5.10
- psalm/plugin-phpunit: ^0.16.0
- vimeo/psalm: ^4.7
Conflicts
README
🇷🇺 俄罗斯公民
我们,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进行渲染。