1
+ ************
1
2
openapi-core
2
3
************
3
4
@@ -15,13 +16,13 @@ openapi-core
15
16
:target: https://pypi.python.org/pypi/openapi-core
16
17
17
18
About
18
- =====
19
+ #####
19
20
20
21
Openapi-core is a Python library that adds client-side and server-side support
21
22
for the `OpenAPI Specification v3.0.0 <https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md >`__.
22
23
23
24
Installation
24
- ============
25
+ ############
25
26
26
27
Recommended way (via pip):
27
28
@@ -37,7 +38,7 @@ Alternatively you can download the code and install from the repository:
37
38
38
39
39
40
Usage
40
- =====
41
+ #####
41
42
42
43
Firstly create your specification:
43
44
@@ -47,6 +48,9 @@ Firstly create your specification:
47
48
48
49
spec = create_spec(spec_dict)
49
50
51
+ Request
52
+ *******
53
+
50
54
Now you can use it to validate requests
51
55
52
56
.. code-block :: python
@@ -83,14 +87,61 @@ or use shortcuts for simple validation
83
87
validated_params = validate_parameters(spec, request)
84
88
validated_body = validate_body(spec, request)
85
89
86
- Request object should be instance of OpenAPIRequest class. You can use FlaskOpenAPIRequest a Flask/Werkzeug request factory:
90
+ Request object should be instance of OpenAPIRequest class (See `Integrations `_).
91
+
92
+ Response
93
+ ********
94
+
95
+ You can also validate responses
96
+
97
+ .. code-block :: python
98
+
99
+ from openapi_core.shortcuts import ResponseValidator
100
+
101
+ validator = ResponseValidator(spec)
102
+ result = validator.validate(request, response)
103
+
104
+ # raise errors if response invalid
105
+ result.raise_for_errors()
106
+
107
+ # get list of errors
108
+ errors = result.errors
109
+
110
+ and unmarshal response data from validation result
111
+
112
+ .. code-block :: python
113
+
114
+ # get headers
115
+ validated_headers = result.headers
116
+
117
+ # get data
118
+ validated_data = result.data
119
+
120
+ or use shortcuts for simple validation
121
+
122
+ .. code-block :: python
123
+
124
+ from openapi_core import validate_data
125
+
126
+ validated_data = validate_data(spec, request, response)
127
+
128
+ Response object should be instance of OpenAPIResponse class (See `Integrations `_).
129
+
130
+
131
+ Integrations
132
+ ############
133
+
134
+ Django
135
+ ******
136
+
137
+ You can use DjangoOpenAPIRequest a Django request factory:
87
138
88
139
.. code-block :: python
89
140
90
141
from openapi_core.shortcuts import RequestValidator
91
- from openapi_core.contrib.flask import FlaskOpenAPIRequest
142
+ from openapi_core.contrib.django import DjangoOpenAPIRequest
92
143
93
- openapi_request = FlaskOpenAPIRequest(flask_request )
144
+ openapi_request = DjangoOpenAPIRequest(django_request )
94
145
validator = RequestValidator(spec)
95
146
result = validator.validate(openapi_request)
96
147
@@ -101,44 +152,58 @@ or simply specify request factory for shortcuts
101
152
from openapi_core import validate_parameters, validate_body
102
153
103
154
validated_params = validate_parameters(
104
- spec, request, request_factory = FlaskOpenAPIRequest )
155
+ spec, request, request_factory = DjangoOpenAPIRequest )
105
156
validated_body = validate_body(
106
- spec, request, request_factory = FlaskOpenAPIRequest )
157
+ spec, request, request_factory = DjangoOpenAPIRequest )
107
158
108
- You can also validate responses
159
+ You can use DjangoOpenAPIResponse as a Django response factory:
109
160
110
161
.. code-block :: python
111
162
112
163
from openapi_core.shortcuts import ResponseValidator
164
+ from openapi_core.contrib.django import DjangoOpenAPIResponse
113
165
166
+ openapi_response = DjangoOpenAPIResponse(django_response)
114
167
validator = ResponseValidator(spec)
115
- result = validator.validate(request, response )
168
+ result = validator.validate(openapi_request, openapi_response )
116
169
117
- # raise errors if response invalid
118
- result.raise_for_errors()
170
+ or simply specify response factory for shortcuts
119
171
120
- # get list of errors
121
- errors = result.errors
172
+ .. code-block :: python
122
173
123
- and unmarshal response data from validation result
174
+ from openapi_core import validate_parameters, validate_body
175
+
176
+ validated_data = validate_data(
177
+ spec, request, response,
178
+ request_factory = DjangoOpenAPIRequest,
179
+ response_factory = DjangoOpenAPIResponse)
180
+
181
+ Flask
182
+ *****
183
+
184
+ You can use FlaskOpenAPIRequest a Flask/Werkzeug request factory:
124
185
125
186
.. code-block :: python
126
187
127
- # get headers
128
- validated_headers = result.headers
188
+ from openapi_core.shortcuts import RequestValidator
189
+ from openapi_core.contrib.flask import FlaskOpenAPIRequest
129
190
130
- # get data
131
- validated_data = result.data
191
+ openapi_request = FlaskOpenAPIRequest(flask_request)
192
+ validator = RequestValidator(spec)
193
+ result = validator.validate(openapi_request)
132
194
133
- or use shortcuts for simple validation
195
+ or simply specify request factory for shortcuts
134
196
135
197
.. code-block :: python
136
198
137
- from openapi_core import validate_data
199
+ from openapi_core import validate_parameters, validate_body
138
200
139
- validated_data = validate_data(spec, request, response)
201
+ validated_params = validate_parameters(
202
+ spec, request, request_factory = FlaskOpenAPIRequest)
203
+ validated_body = validate_body(
204
+ spec, request, request_factory = FlaskOpenAPIRequest)
140
205
141
- Response object should be instance of OpenAPIResponse class. You can use FlaskOpenAPIResponse a Flask/Werkzeug response factory:
206
+ You can use FlaskOpenAPIResponse as a Flask/Werkzeug response factory:
142
207
143
208
.. code-block :: python
144
209
@@ -160,7 +225,12 @@ or simply specify response factory for shortcuts
160
225
request_factory = FlaskOpenAPIRequest,
161
226
response_factory = FlaskOpenAPIResponse)
162
227
228
+ Pyramid
229
+ *******
230
+
231
+ See `pyramid_openapi3 <https://github.com/niteoweb/pyramid_openapi3 >`_ project.
232
+
163
233
Related projects
164
- ================
234
+ ################
165
235
* `openapi-spec-validator <https://github.com/p1c2u/openapi-spec-validator >`__
166
236
* `pyramid_openapi3 <https://github.com/niteoweb/pyramid_openapi3 >`__
0 commit comments