Provided by: libmojolicious-plugin-openapi-perl_5.09-1_all bug

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 valid
             return 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 future
             return $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.

perl v5.36.0                                20Mojolicious::Plugin::OpenAPI::Guides::Swagger2(3pm)