iadvize / php-swaggerize-fastroute-library
该软件包的最新版本(0.2.0)没有可用的许可证信息。
一个库,根据swagger JSON文档自动创建FastRoute路由
0.2.0
2015-10-22 14:16 UTC
Requires
- php: >=5.5.21
- nikic/fast-route: 0.*
- symfony/console: ^2.7
- thefrozenfire/swagger: ^2.0
Requires (Dev)
- iadvize/php-convention: dev-master
- mockery/mockery: ~0.9
- phpunit/phpunit: ~4.8
This package is not auto-updated.
Last update: 2024-09-14 18:35:42 UTC
README
⚠️ 警告:此存储库已过时,自2015年起不再维护。请参阅删除指南此处。
一个库,根据swagger JSON文档自动创建FastRoute路由
删除指南
此库已过时,自2015年起不再维护。以下是将其从项目中删除的指南
- 检查您的应用程序是否使用此库
iadvize/php-swaggerize-fastroute-library
(在php代码中搜索Iadvize\SwaggerizeFastRoute
包导入)。如果没有,您可以从composer.json
中安全地删除它并跳过下一步。 - 如果您的CI/CD或dockerfile使用
swaggerize swagger:scan
命令,则应- 手动运行一次(使用您的完整现有命令,例如:
./vendor/bin/swaggerize swagger:scan storage/docs/definition.json "path/to/controllers" --routeFile somewhere/routeFile.php
) - 从您的CI/CD或dockerfile中删除
swaggerize swagger:scan
命令
- 手动运行一次(使用您的完整现有命令,例如:
- 将生成的路由文件转换为标准FastRoute设置(请参阅FastRoute 文档),通常与使用
Iadvize\SwaggerizeFastRoute
包的文件相同。 - 从您的php代码和所有使用中删除
Iadvize\SwaggerizeFastRoute
包的导入。 - 从您的
composer.json
中删除iadvize/php-swaggerize-fastroute-library
(例如:composer remove iadvize/php-swaggerize-fastroute-library
) - 删除routeFile.php文件(不再需要)
示例
生成路由文件(与FastRoute兼容)
vendor/bin/swaggerize swagger:scan path/to/swagger/json controllers\namespace [--routeFile=route/file/path]
安装
使用composer安装
composer require iadvize/php-swaggerize-fastroute-library
文档
生成路由文件(与FastRoute兼容)
vendor/bin/swaggerize swagger:scan path/to/swagger/json controllers\namespace [--routeFile=route/file/path]
分发生成的文件或直接使用缓存
然后您可以使用FastRoute缓存分发器来使用生成的文件或直接使用缓存分发器(文件将在第一次调用时生成)。
<?php require '/path/to/vendor/autoload.php'; $lumenOperationParser = new \Iadvize\SwaggerizeFastRoute\OperationParser\LumenControllerOperationParser('Controllers\\Namespace\\'); $dispatcher = FastRoute\simpleDispatcher(function(FastRoute\RouteCollector $r, ['cacheFile' => 'route/file/path']) { \Iadvize\SwaggerizeFastRoute\addRoutes( 'path/to/swagger/json', $r, $lumenOperationParser, ['routeFile' => 'path/to/generated/route/file', 'cacheEnabled' => false] ); }); // Fetch method and URI from somewhere // ... see FastRoute Dispatcher
或者,要生成路由,您可以在addRoute函数中设置'cacheEnabled' => true
来简单地缓存首次解析。
应用于Lumen应用程序
要在一个使用FastRoute作为路由库的Lumen应用程序(例如)中使用这些swagger路由,您需要扩展Laravel\Lumen\Application
并覆盖createDispatcher
方法。
<?php namespace My\Application; use Laravel\Lumen\Application as LumenApplication; /** * Class Application * * @package My\Application */ class Application extends LumenApplication { /** * {@inheritdoc} */ protected function createDispatcher() { return $this->dispatcher ?: \FastRoute\simpleDispatcher(function ($r) { foreach ($this->routes as $route) { $r->addRoute($route['method'], $route['uri'], $route['action']); } $operationParser = new \Iadvize\SwaggerizeFastRoute\OperationParser\LumenControllerOperationParser('My\Application\Http\Controllers'); \Iadvize\SwaggerizeFastRoute\addRoutes(storage_path('docs/definition.json'), $r, $operationParser, ['routeFile' => 'route/file/path']); }); } }
处理程序是如何形成的
处理程序由swagger中定义的路由形成,如Lumen为其控制器类定义的那样: Controller@method
控制器类生成
控制器类由路径路由决定,首字母大写,以文件名结尾为Controller
此swagger JSON
{ // ... "paths": { "/pets": { "get": { // ... } "put": { // ... } } "/store": { "post": { // ... } } } // ... }
将相应地生成以下处理程序
PetsController@get
PetsController@update
StoreController@create
方法生成
控制器方法映射自HTTP方法
GET
=>get
,POST
=>create
,PUT
=>update
,HEAD
=>head
,OPTIONS
=>options
,PATCH
=>patch
,DELETE
=>delete
,
贡献
查看贡献指南请在这里: CONTRIBUTING.md