---
name: "Mojolicious::Plugin::OpenAPI::Guides::Swagger2"
section: "3pm"
platform: "linux"
package: "libmojolicious-plugin-openapi-perl"
version: "5.11-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Mojolicious::Plugin::OpenAPI::Guides::Swagger2"
---

# Mojolicious::Plugin::OpenAPI::Guides::Swagger2(3pm)

Swagger2 back compat guide

## 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.
