简体   繁体   中英

Swagger is not working in integration with ZendFramework2

Could you please suggest why Swagger is not working for me in integration with ZendFramework2. I followed the instructions given here .

composer.json :

{
    "require": {
        "php": ">=5.3.3",
        "zendframework/zendframework": "2.3.5",
        "outeredge/swagger-module": "dev-master"
    },
}

config/application.config.php :

<?php
    return array(
        'modules' => array(
            'MyApp',
            'SwaggerModule',
        ),
        'module_listener_options' => array(
            'module_paths' => array(
                './module',
                './vendor',
            ),
        ),
    );
?>

/config/autoload/swagger.global.php :

return array(
    'swagger' => array(
        'paths' => array(
            __DIR__ . '/../../module/Morpho/src/Morpho/Controller',
        ),
        'resource_options' => array(
            'output' => 'array',
            'json_pretty_print' => true, // for outputtype 'json'
            'defaultBasePath' => null,
            'defaultApiVersion' => null,
            'defaultSwaggerVersion' => '1.2',
        ),
    )
);

After I deploy the application under Apache, when call http://myapp/public/api/docs , I get:

{"errors":[{"message":"An error occurred during execution;
please try again later.","error":"error-exception","exception":
"class":"Zend\ServiceManager\Exception\ServiceNotCreatedException",
"file":"\vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php",
"line":930,
"message":"An exception was raised while creating "Swagger\Swagger";
no instance returned"

Stacktrace :

 0 \vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php(1057): Zend\ServiceManager\ServiceManager->createServiceViaCallback(Object(Closure), 'swaggerswagger', 'Swagger\Swagger')
 1 \vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php(633): Zend\ServiceManager\ServiceManager->createFromFactory('swaggerswagger', 'Swagger\Swagger')
 2 \vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php(593): Zend\ServiceManager\ServiceManager->doCreate('Swagger\Swagger', 'swaggerswagger')
 3 \vendor\zendframework\zendframework\library\Zend\ServiceManager\ServiceManager.php(525): Zend\ServiceManager\ServiceManager->create(Array)
 4 \vendor\outeredge\swagger-module\src\SwaggerModule\Controller\DocumentationController.php(39): Zend\ServiceManager\ServiceManager->get('Swagger\Swagger')
 5 \vendor\zendframework\zendframework\library\Zend\Mvc\Controller\AbstractActionController.php(83): SwaggerModule\Controller\DocumentationController->displayAction()
 6 [internal function]: Zend\Mvc\Controller\AbstractActionController->onDispatch(Object(Zend\Mvc\MvcEvent))
 7 \vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(468): call_user_func(Array, Object(Zend\Mvc\MvcEvent))
 8 \vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(207): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
 9 \vendor\zendframework\zendframework\library\Zend\Mvc\Controller\AbstractController.php(116): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
 10 \vendor\zendframework\zendframework\library\Zend\Mvc\DispatchListener.php(113): Zend\Mvc\Controller\AbstractController->dispatch(Object(Zend\Http\PhpEnvironment\Request), Object(Zend\Http\PhpEnvironment\Response))
 11 [internal function]: Zend\Mvc\DispatchListener->onDispatch(Object(Zend\Mvc\MvcEvent))
 12 \vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(468): call_user_func(Array, Object(Zend\Mvc\MvcEvent))
 13 \vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(207): Zend\EventManager\EventManager->triggerListeners('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
 14 \vendor\zendframework\zendframework\library\Zend\Mvc\Application.php(313): Zend\EventManager\EventManager->trigger('dispatch', Object(Zend\Mvc\MvcEvent), Object(Closure))
 15 \public\index.php(10): Zend\Mvc\Application->run()
 16 {main}"}}]}

swagger-module seems not active. Please try https://github.com/zircote/swagger-php instead.

I was getting same type of error and able to fix the issue by following.

Create file in in Development system swagger.development.php 创建文件在开发系统中为swagger.development.php

have following content. 具有以下内容。

return array(
    'swagger' => array(
        'paths' => array(
            __DIR__ . '/../../module/Api/src/Api/Controller',
        ),
        'resource_options' => array(
            'output' => 'array',
            'json_pretty_print' => true, 
            'defaultBasePath' => '/',
            'defaultApiVersion' => null,
            'defaultSwaggerVersion' => '1.2',
        ),
    )
);

Thanks

http://www.web-technology-experts-notes.in

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM