iadvize/php-swaggerize-fastroute-library

该软件包的最新版本(0.2.0)没有可用的许可证信息。

一个库,根据swagger JSON文档自动创建FastRoute路由

0.2.0 2015-10-22 14:16 UTC

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