This module provides Apigility the ability to show API documentation through a Swagger UI.
The Swagger UI is immediately accessible after enabling this module at the URI path /apigility/swagger.
In addition to providing the HTML UI, this module also plugs into the main Apigility documentation
resource (at the path /apigility/documentation) in order to allow returning a documentation
payload in the application/vnd.swagger+json media type; this resource is what feeds the Swagger
UI. You can access this representation by passing the media type application/vnd.swagger+json for
the Accept header via the path /apigility/documentation/:module/:service.
Please see the composer.json file.
Run the following composer command:
$ composer require "zfcampus/zf-apigility-documentation-swagger:~1.0-dev"Alternately, manually add the following to your composer.json, in the require section:
"require": {
"zfcampus/zf-apigility-documentation-swagger": "~1.0-dev"
}And then run composer update to ensure the module is installed.
Finally, add the module name to your project's config/application.config.php under the modules
key:
return array(
/* ... */
'modules' => array(
/* ... */
'ZF\Apigility\Documentation\Swagger',
),
/* ... */
);Shows the Swagger UI JavaScript application.
Various CSS, images, and JavaScript libraries required to deliver the Swagger UI client application.
The following is required to ensure the module works within a ZF2 and/or Apigility-enabled application:
'router' => array(
'routes' => array(
'zf-apigility' => array(
'child_routes' => array(
'swagger' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/swagger',
'defaults' => array(
'controller' => 'ZF\Apigility\Documentation\Swagger\SwaggerUi',
'action' => 'list',
),
),
'may_terminate' => true,
'child_routes' => array(
'api' => array(
'type' => 'Segment',
'options' => array(
'route' => '/:api',
'defaults' => array(
'action' => 'show',
),
),
'may_terminate' => true,
),
),
),
),
),
),
),
'service_manager' => array(
'factories' => array(
'ZF\Apigility\Documentation\Swagger\SwaggerViewStrategy' => 'ZF\Apigility\Documentation\Swagger\SwaggerViewStrategyFactory',
),
),
'controllers' => array(
'factories' => array(
'ZF\Apigility\Documentation\Swagger\SwaggerUi' => 'ZF\Apigility\Documentation\Swagger\SwaggerUiControllerFactory',
),
),
'view_manager' => array(
'template_path_stack' => array(
'zf-apigility-documentation-swagger' => __DIR__ . '/../view',
),
),
'asset_manager' => array(
'resolver_configs' => array(
'paths' => array(
__DIR__ . '/../asset',
),
),
),
'zf-content-negotiation' => array(
'accept_whitelist' => array(
'ZF\Apigility\Documentation\Controller' => array(
0 => 'application/vnd.swagger+json',
),
),
'selectors' => array(
'Documentation' => array(
'ZF\Apigility\Documentation\Swagger\ViewModel' => array(
'application/vnd.swagger+json',
),
)
)
),This listener is attached to the MvcEvent::EVENT_RENDER event at priority 100. Its purpose is
to conditionally attach a view strategy to the view system in cases where the controller response is
a ZF\Apigility\Documentation\Swagger\ViewModel view model (likely selected as the
content-negotiated view model based off of Accept media types).
This view model is responsible for translating the available ZF\Apigility\Documentation models
into Swagger-specific models, and further casting them to arrays for later rendering as JSON.
