Mojolicious::Plugin::Swagger2 - Mojolicious plugin for Swagger2
See Swagger2.
package MyApp; use Mojo::Base "Mojolicious"; sub startup { my $app = shift; $app->plugin(Swagger2 => {url => "data://MyApp/petstore.json"}); } __DATA__ @@ petstore.json { "swagger": "2.0", "info": {...}, "host": "petstore.swagger.wordnik.com", "basePath": "/api", "paths": { "/pets": { "get": {...} } } }
Mojolicious::Plugin::Swagger2 is Mojolicious::Plugin that add routes and input/output validation to your Mojolicious application.
This hook will be DEPRECATED! See https://github.com/jhthorsen/swagger2/issues/65.
The Swagger2 object used to generate the routes is available as swagger from stash. Example code:
swagger
sub documentation { my ($c, $args, $cb); $c->$cb($c->stash('swagger')->pod->to_string, 200); }
The Swagger specification for the current operation object is stored in the "swagger_operation_spec" stash variable.
sub list_pets { my ($c, $args, $cb); $c->app->log->info($c->stash("swagger_operation_spec")->{operationId}); ... }
Holds the URL to the swagger specification file.
$bool = $c->dispatch_to_swagger(\%data);
This helper can be used to handle WebSocket requests with swagger.
This helper is EXPERIMENTAL.
$c->render_swagger(\%err, \%data, $status);
This method is used to render %data from the controller method. The %err hash will be empty on success, but can contain input/output validation errors. $status is used to set a proper HTTP status code such as 200, 400 or 500.
%data
%err
$status
$self->register($app, \%config);
This method is called when this plugin is registered in the Mojolicious application.
%config can contain these parameters:
%config
coerce
This argument will be passed on to "coerce" in JSON::Validator.
ensure_swagger_response
$app->plugin(swagger2 => { ensure_swagger_response => { exception => "Internal server error.", not_found => "Not found.", } });
Adds a before_render hook which will make sure "exception" and "not_found" responses are in JSON format. There is no need to specify "exception" and "not_found" if you are happy with the defaults.
route
Need to hold a Mojolicious route object. See "Protected API" for an example.
This parameter is optional.
spec_path
Holds the location for where the specifiation can be served from. The default value is "/", relative to "basePath" in the specification. Can be disabled by setting this value to empty string.
validate
A boolean value (default is true) that will cause your schema to be validated. This plugin will abort loading if the schema include errors
A Swagger2 object. This can be useful if you want to keep use the specification to other things in your application. Example:
Swagger2
use Swagger2; my $swagger = Swagger2->new->load($url); plugin Swagger2 => {swagger => $swagger2}; app->defaults(swagger_spec => $swagger->api_spec);
Either this parameter or url need to be present.
url
This will be used to construct a new Swagger2 object. The url can be anything that "load" in Swagger2 can handle.
Either this parameter or swagger need to be present.
Copyright (C) 2014-2015, Jan Henning Thorsen
This program is free software, you can redistribute it and/or modify it under the terms of the Artistic License version 2.0.
Jan Henning Thorsen - jhthorsen@cpan.org
jhthorsen@cpan.org
To install Swagger2, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Swagger2
CPAN shell
perl -MCPAN -e shell install Swagger2
For more information on module installation, please visit the detailed CPAN module installation guide.