jdesrosiers / silex-swagger-provider
此包已被弃用且不再维护。未建议替代包。
一个将swagger-php集成到silex中的silex服务提供者
v1.2.0
2014-02-08 05:08 UTC
Requires
- silex/silex: ~1.0
- zircote/swagger-php: ~0.8,<0.10.0
Requires (Dev)
- phpunit/phpunit: 3.7.*
- symfony/browser-kit: 2.3.*
README
silex-swagger-provider 是一个将 swagger-php 集成到 silex 中的silex服务提供者。此服务提供者添加了基于swagger-php注解生成和暴露swagger定义的路由。然后可以使用 swagger-ui 来使用swagger定义。
安装
使用 composer 安装 silex-swagger-provider。此项目使用 语义化版本控制。
{ "require": { "jdesrosiers/silex-swagger-provider": "~1.0" } }
参数
- swagger.srcDir: swagger-php组件的路径。
- swagger.servicePath: 包含你的swagger注解的类路径。
- swagger.excludePath: 生成注解时需要排除的路径列表,用冒号
:
分隔。 - swagger.apiDocPath: 用于访问swagger定义的URI。默认为
/api/api-docs
。 - swagger.prettyPrint: 决定生成的JSON是否为人类可读的格式。
- swagger.cache: 将传递给Symfony 2的
Response::setCache
方法的缓存选项数组。 - swagger.basePath: 您API的URL。如果您的Swagger注解包含basePath,则将覆盖此值。例如: "http://api.example.com/
- swagger.apiVersion: 您API的版本。如果您的Swagger注解包含版本,则将覆盖此值。
- swagger.swaggerVersion: 您API的Swagger版本。如果您的Swagger注解包含swagger版本,则将覆盖此值。
- swagger.resourcePrefix: 将附加到每个资源URI的前缀字符串。默认为 "/"。
- swagger.resourceSuffix: 将附加到每个资源URI的后缀字符串。默认为 ""。
服务
- swagger:
Swagger\Swagger
的实例。它用于内部生成swagger定义。你可能不需要直接使用它。
注册
$app->register(new JDesrosiers\Silex\Provider\SwaggerServiceProvider(), array( "swagger.srcDir" => __DIR__ . "/vendor/zircote/swagger-php/library", "swagger.servicePath" => __DIR__ . "/path/to/your/api", ));
使用
默认提供的以下路由
GET /api/api-docs
: 获取资源列表GET /api/api-docs/{service}
: 获取特定资源的定义
Swagger定义文件的输出不会在内部进行缓存。相反,创建的路由设计为与HTTP缓存(如浏览器缓存或反向代理)一起工作。您可以使用swagger.cache
参数配置如何缓存您的服务。默认情况下,不会进行缓存。有关如何在Symfony中自定义缓存行为的更多信息,请参阅HTTP缓存。以下示例将允许服务定义文件缓存5天。
$app["swagger.cache"] = array( "max_age": "432000", // 5 days in seconds "s_maxage": "432000", // 5 days in seconds "public": true, )
日志记录
Swagger使用PHP通知和警告来记录它在尝试生成您的API文档时遇到的问题。如果您的silex应用程序有一个logger
服务,它也会记录这些问题。
入门指南
以下是一个快速入门的最小示例。它使用jdesrosiers/silex-cors-provider允许我们使用swagger-ui的演示安装,而无需自己搭建。有关如何扩展此示例的详细信息,请参阅swagger-php文档。
- 创建一个至少包含以下依赖的composer.json文件
{ "require": { "jdesrosiers/silex-swagger-provider": "~1.0", "jdesrosiers/silex-cors-provider": "~0.1" } }
- 运行composer install
- 创建/web/index.php
<?php use Swagger\Annotations as SWG; require __DIR__ . "/../vendor/autoload.php"; /** * @SWG\Resource(basePath="http://localhost:8000", resourcePath="/foo") */ $app = new Silex\Application(); $app["debug"] = true; $app->register(new JDesrosiers\Silex\Provider\SwaggerServiceProvider(), array( "swagger.srcDir" => __DIR__ . "/../vendor/zircote/swagger-php/library", "swagger.servicePath" => __DIR__ . "/", )); $app->register(new JDesrosiers\Silex\Provider\CorsServiceProvider(), array( "cors.allowOrigin" => "http://petstore.swagger.io", )); /** * @SWG\Api(path="/foo", @SWG\Operations(@SWG\Operation(method="GET", nickname="foo"))) */ $app->get('/foo', function () use ($app) { return 'bar'; }); $app->after($app["cors"]); $app->run();
- 运行服务
php -S localhost:8000 -t web web/index.php
- 访问http://petstore.swagger.io/,在顶部输入框中输入
http://localhost:8000/api/api-docs
,然后点击Explore