NAME
Mojolicious::Plugin::Swagger2 - Mojolicious plugin for Swagger2
SYNOPSIS
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": {...}
}
}
}
DESCRIPTION
Mojolicious::Plugin::Swagger2 is Mojolicious::Plugin that add routes and input/output validation to your Mojolicious application.
Have a look at the "RESOURCES" for a complete reference to what is possible or look at Swagger2::Guides::Tutorial for an introduction.
RESOURCES
Swagger2::Guides::Tutorial - Tutorial for this plugin
Swagger2::Guides::Render - Details about the render process
Swagger2::Guides::ProtectedApi - Protected API Guide
Swagger2::Guides::CustomPlaceholder - Custom placeholder for your routes
STASH VARIABLES
swagger
The Swagger2 object used to generate the routes is available as swagger
from stash. Example code:
sub documentation {
my ($c, $args, $cb);
$c->$cb($c->stash('swagger')->pod->to_string, 200);
}
swagger_operation_spec
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});
...
}
ATTRIBUTES
url
Holds the URL to the swagger specification file.
HELPERS
render_swagger
$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.
See also Swagger2::Guides::Render for more information.
METHODS
register
$self->register($app, \%config);
This method is called when this plugin is registered in the Mojolicious application.
%config
can contain these parameters:
route
Need to hold a Mojolicious route object. See "Protected API" for an example.
This parameter is optional.
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
CAVEAT! There is an issue with YAML and booleans, so YAML specs might fail even when they are correct. See https://github.com/jhthorsen/swagger2/issues/39.
swagger
A
Swagger2
object. This can be useful if you want to keep use the specification to other things in your application. Example: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 AND LICENSE
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.
AUTHOR
Jan Henning Thorsen - jhthorsen@cpan.org