NAME
Mojolicious::Plugin::OpenAPI::Guides::Swagger2 - Swagger2 back compat guide
OVERVIEW
This guide is useful if your application is already using Mojolicious::Plugin::Swagger2.
The old plugin used to pass on $args and $cb to the action. This can be emulated using an around_action hook. The "SYNOPSIS" below contains example code that you can use to make your old controllers and actions work with Mojolicious::Plugin::OpenAPI.
SYNOPSIS
package MyApp;use Mojo::Base "Mojolicious";sub startup {my $self = shift;# Load your specification$self->plugin("OpenAPI" => {url => $app->home->rel_file("myapi.json")});$self->hook(around_action => sub {my ($next, $c, $action, $last) = @_;# Do not call the action with ($args, $cb) unless it is an# OpenAPI endpoint.return $next->() unless $last;return $next->() unless $c->openapi->spec;# Render error document unless the input is validreturn unless $c->openapi->valid_input;my $cb = sub {my ($c, $data, $code) = @_;$c->render(openapi => $data, status => $code);};# Call the action with ($args, $cb)# NOTE! $c->validation->output will be removed in the futurereturn $c->$action($c->validation->output, $cb);});}
MOVING FORWARD
Note that the "around_action" hook above does not prevent you from writing new actions using the standard Mojolicious::Plugin::OpenAPI API. In the new actions, you can simply drop using $args and $cb and it will work as expected as well.
SEE ALSO
<https://github.com/jhthorsen/mojolicious-plugin-openapi/blob/master/t/swagger2.t>
Mojolicious::Plugin::OpenAPI.