junioalmeida / slim-framework-swagger-json-and-viewer
通过此json生成json Swagger和文档的视图。
1.0.225
2017-10-24 15:19 UTC
Requires
- php: >5.6.0
- slim/slim: ^3.0.0
- slim/twig-view: ^2.0.0
- zircote/swagger-php: ^2.0.0
README
此代码将swagger-php库与Slim Framework 3集成,提供两个资源
1 - JSON FILE: 自动生成用于Swagger的json文件。
- 自动生成的json文件的路径
[GET]/docs/json
(可以更改) - json的信息通过注释获得,这些注释是专门编写在项目中的任何文件中的特殊注释。
- 可以通过这里访问swagger-php的文档。
- 请查看swagger-php Annotations的示例。
- swagger-php入门。
- 默认扫描路径为
/src/
(可以更改) TODO:
还需要实现一些缓存技术,以便在访问文档时不需要扫描...
...
...
2 - DOC VIEWER: 使用swagger-ui生成文档视图的链接。
- 生成文档视图的路径
[GET]/docs/view
(可以更改) - 使用从swagger.ui项目复制的文件。
为库中内嵌的js和cs资源创建动态链接
(因此不需要将其复制到public目录)
...
安装
1 - 这是您需要在项目Slim Framework 3依赖文件中添加的唯一代码,以实现集成。
// Configurações da integração Slim+Swagger-PHP e do Swagger-PHP
// $app é a variavel que contem a instancia da aplicação
$container[\JunioDeAlmeida\Slim\SlimSwaggerRouteJav::class] = function ($c) use ($app) {
return new \JunioDeAlmeida\Slim\SlimSwaggerRouteJav($app);
};
// Seteando as rotas /docs/view e /docs/json
$container[\JunioDeAlmeida\Slim\SlimSwaggerRouteJav::class]->setRouters();
通常此文件位于`
/src/dependencies.php`,并具有以下代码
$container = $app->getContainer();
。
2 - 在文件/public/index.php
中检查接收\Slim\App实例的变量名称是否为$app
session_start();
// Instantiate the app
$settings = require __DIR__ . '/../src/settings.php';
$app = new \Slim\App($settings);
// Set up dependencies
require __DIR__ . '/../src/dependencies.php';
如果不是,请修改以下代码段:function ($c) use ($app) {
在
$container[\JunioDeAlmeida\Slim\SlimSwaggerRouteJav::class] = function ($c) use ($app) {
3 - 在settings.php
中添加并修改,使其指向包含带有Annotations的类的根目录,这些类将被扫描。
return [
'settings' => [
// ... here another settings
// Configuração do Swagger - gerador de documentação de api
'swagger' => [
// Pasta raiz que será escaneada em busca de Annotations. Um exemplo é chamado se a url não for configurada.
'baseDir' => __DIR__ . '/../vendor/junioalmeida/slim-framework-swagger-json-and-viewer/Examples/petstore.swagger.io', // Link de exemplo
// 'baseDir' => __DIR__ . '/../src', // Geralmente as classes do projeto fica na pasta \src\
// 'ignoreDir' => [],
// 'routes' => [
// 'json' => '/docs/json',
// 'view' => '/docs/view',
// 'resources' => '/docs/resources/{resource}',
// ],
// 'projects' => [
// ['name'=>'This project', 'url'=>'/docs/json'],
// ['name'=>'Exemplo', 'url'=>'http://petstore.swagger.io/v2/swagger.json'],
// ],
//]
],
];
您可以暂时设置示例,以便查看文档。