JSON::Validator::OpenAPI::Mojolicious(3pm) | User Contributed Perl Documentation | JSON::Validator::OpenAPI::Mojolicious(3pm) |
JSON::Validator::OpenAPI::Mojolicious - JSON::Validator request/response adapter for Mojolicious
my $validator = JSON::Validator::OpenAPI::Mojolicious->new; $validator->load_and_validate_schema("myschema.json"); my @errors = $validator->validate_request( $c, $validator->get([paths => "/wharever", "get"]), $c->validation->output, ); @errors = $validator->validate_response( $c, $validator->get([paths => "/wharever", "get"]), 200, {some => {response => "data"}}, );
JSON::Validator::OpenAPI::Mojolicious is a module for validating request and response data from/to your Mojolicious application.
Do not use this module directly. Use Mojolicious::Plugin::OpenAPI instead.
$str = %c->stash("openapi_negotiated_content_type");
This value will be set when the Accept header has been validated successfully against an OpenAPI v3 schema. Note that this could have the value of "*/*" or other invalid "Content-Header" values. It will be "undef" if the "Accept" header is not accepteed.
Unfortunately, this variable is not set until you call "render" in Mojolicious::Controller, since we need a status code to figure out which types are accepted.
This means that if you want to validate the "Accept" header on input, then you have to specify that as a parameter in the spec.
JSON::Validator::OpenAPI::Mojolicious inherits all attributes from JSON::Validator.
$validator = $validator->formats({}); $hash_ref = $validator->formats;
Open API support the same formats as JSON::Validator, but adds the following to the set:
A padded, base64-encoded string of bytes, encoded with a URL and filename safe alphabet. Defined by RFC4648.
An RFC3339 date in the format YYYY-MM-DD
Cannot test double values with higher precision then what the "number" type already provides.
Will always be true if the input is a number, meaning there is no difference between "float" and "double". Patches are welcome.
A signed 32 bit integer.
A signed 64 bit integer. Note: This check is only available if Perl is compiled to use 64 bit integers.
$str = $validator->version;
Used to get the OpenAPI Schema version to use. Will be set automatically when using "load_and_validate_schema", unless already set. Supported values are "2" an "3".
JSON::Validator::OpenAPI::Mojolicious inherits all attributes from JSON::Validator.
$validator = $validator->load_and_validate_schema($schema, \%args);
Will load and validate $schema against the OpenAPI specification. $schema can be anything "schema" in JSON::Validator accepts. The expanded specification will be stored in "schema" in JSON::Validator on success. See "schema" in JSON::Validator for the different version of $url that can be accepted.
%args can be used to further instruct the expansion and validation process:
Setting this to a true value, will disable the first pass. This is useful if you don't like the restrictions set by OpenAPI, regarding where you can use $ref in your specification.
Setting this to a module/class name will use the version number from the class and overwrite the version in the specification:
{ "info": { "version": "1.00" // <-- this value } }
The validation is done with a two pass process:
@errors = $validator->validate_input($data, $schema);
This method will make sure "readOnly" is taken into account, when validating data sent to your API.
@errors = $validator->validate_request($c, $schema, \%input);
Takes an Mojolicious::Controller and a schema definition and returns a list of errors, if any. Validated input parameters are moved into the %input hash.
@errors = $validator->validate_response($c, $schema, $status, $data);
Mojolicious::Plugin::OpenAPI.
JSON::Validator.
<http://openapi-specification-visual-documentation.apihandyman.io/>
2021-01-30 | perl v5.32.0 |