junioalmeida/slim-framework-swagger-json-and-viewer

通过此json生成json Swagger和文档的视图。

1.0.225 2017-10-24 15:19 UTC

This package is auto-updated.

Last update: 2024-09-29 05:01:29 UTC


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'],
        //  ],
        //]
    ],
];

您可以暂时设置示例,以便查看文档。