1JSON::Validator::OpenAPUIs:e:rMoCjoonltirciibouutse(d3J)PSeOrNl::DVoacluimdeanttoart:i:oOnpenAPI::Mojolicious(3)
2
3
4
6 JSON::Validator::OpenAPI::Mojolicious - JSON::Validator
7 request/response adapter for Mojolicious
8
10 my $validator = JSON::Validator::OpenAPI::Mojolicious->new;
11 $validator->load_and_validate_schema("myschema.json");
12
13 my @errors = $validator->validate_request(
14 $c,
15 $validator->get([paths => "/wharever", "get"]),
16 $c->validation->output,
17 );
18
19 @errors = $validator->validate_response(
20 $c,
21 $validator->get([paths => "/wharever", "get"]),
22 200,
23 {some => {response => "data"}},
24 );
25
27 JSON::Validator::OpenAPI::Mojolicious is a module for validating
28 request and response data from/to your Mojolicious application.
29
30 Do not use this module directly. Use Mojolicious::Plugin::OpenAPI
31 instead.
32
34 openapi_negotiated_content_type
35 $str = %c->stash("openapi_negotiated_content_type");
36
37 This value will be set when the Accept header has been validated
38 successfully against an OpenAPI v3 schema. Note that this could have
39 the value of "*/*" or other invalid "Content-Header" values. It will be
40 "undef" if the "Accept" header is not accepteed.
41
42 Unfortunately, this variable is not set until you call "render" in
43 Mojolicious::Controller, since we need a status code to figure out
44 which types are accepted.
45
46 This means that if you want to validate the "Accept" header on input,
47 then you have to specify that as a parameter in the spec.
48
50 JSON::Validator::OpenAPI::Mojolicious inherits all attributes from
51 JSON::Validator.
52
53 formats
54 $validator = $validator->formats({});
55 $hash_ref = $validator->formats;
56
57 Open API support the same formats as JSON::Validator, but adds the
58 following to the set:
59
60 • byte
61
62 A padded, base64-encoded string of bytes, encoded with a URL and
63 filename safe alphabet. Defined by RFC4648.
64
65 • date
66
67 An RFC3339 date in the format YYYY-MM-DD
68
69 • double
70
71 Cannot test double values with higher precision then what the
72 "number" type already provides.
73
74 • float
75
76 Will always be true if the input is a number, meaning there is no
77 difference between "float" and "double". Patches are welcome.
78
79 • int32
80
81 A signed 32 bit integer.
82
83 • int64
84
85 A signed 64 bit integer. Note: This check is only available if Perl
86 is compiled to use 64 bit integers.
87
88 version
89 $str = $validator->version;
90
91 Used to get the OpenAPI Schema version to use. Will be set
92 automatically when using "load_and_validate_schema", unless already
93 set. Supported values are "2" an "3".
94
96 JSON::Validator::OpenAPI::Mojolicious inherits all attributes from
97 JSON::Validator.
98
99 load_and_validate_schema
100 $validator = $validator->load_and_validate_schema($schema, \%args);
101
102 Will load and validate $schema against the OpenAPI specification.
103 $schema can be anything "schema" in JSON::Validator accepts. The
104 expanded specification will be stored in "schema" in JSON::Validator on
105 success. See "schema" in JSON::Validator for the different version of
106 $url that can be accepted.
107
108 %args can be used to further instruct the expansion and validation
109 process:
110
111 • allow_invalid_ref
112
113 Setting this to a true value, will disable the first pass. This is
114 useful if you don't like the restrictions set by OpenAPI, regarding
115 where you can use $ref in your specification.
116
117 • version_from_class
118
119 Setting this to a module/class name will use the version number from
120 the class and overwrite the version in the specification:
121
122 {
123 "info": {
124 "version": "1.00" // <-- this value
125 }
126 }
127
128 The validation is done with a two pass process:
129
130 1.
131 First it will check if the $ref is only specified on the correct
132 places. This can be disabled by setting "allow_invalid_ref" to a
133 true value.
134
135 2.
136 Validate the expanded version of the spec, (without any $ref) against
137 the OpenAPI schema.
138
139 validate_input
140 @errors = $validator->validate_input($data, $schema);
141
142 This method will make sure "readOnly" is taken into account, when
143 validating data sent to your API.
144
145 validate_request
146 @errors = $validator->validate_request($c, $schema, \%input);
147
148 Takes an Mojolicious::Controller and a schema definition and returns a
149 list of errors, if any. Validated input parameters are moved into the
150 %input hash.
151
152 validate_response
153 @errors = $validator->validate_response($c, $schema, $status, $data);
154
156 Mojolicious::Plugin::OpenAPI.
157
158 JSON::Validator.
159
160 <http://openapi-specification-visual-documentation.apihandyman.io/>
161
162
163
164perl v5.32.1 2021-J0S1O-N3:1:Validator::OpenAPI::Mojolicious(3)