Skip to content

Commit 334674d

Browse files
committed
README update with Django usage
1 parent cdf6ecb commit 334674d

File tree

1 file changed

+94
-24
lines changed

1 file changed

+94
-24
lines changed

README.rst

Lines changed: 94 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
************
12
openapi-core
23
************
34

@@ -15,13 +16,13 @@ openapi-core
1516
:target: https://pypi.python.org/pypi/openapi-core
1617

1718
About
18-
=====
19+
#####
1920

2021
Openapi-core is a Python library that adds client-side and server-side support
2122
for the `OpenAPI Specification v3.0.0 <https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md>`__.
2223

2324
Installation
24-
============
25+
############
2526

2627
Recommended way (via pip):
2728

@@ -37,7 +38,7 @@ Alternatively you can download the code and install from the repository:
3738
3839
3940
Usage
40-
=====
41+
#####
4142

4243
Firstly create your specification:
4344

@@ -47,6 +48,9 @@ Firstly create your specification:
4748
4849
spec = create_spec(spec_dict)
4950
51+
Request
52+
*******
53+
5054
Now you can use it to validate requests
5155

5256
.. code-block:: python
@@ -83,14 +87,61 @@ or use shortcuts for simple validation
8387
validated_params = validate_parameters(spec, request)
8488
validated_body = validate_body(spec, request)
8589
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:
87138

88139
.. code-block:: python
89140
90141
from openapi_core.shortcuts import RequestValidator
91-
from openapi_core.contrib.flask import FlaskOpenAPIRequest
142+
from openapi_core.contrib.django import DjangoOpenAPIRequest
92143
93-
openapi_request = FlaskOpenAPIRequest(flask_request)
144+
openapi_request = DjangoOpenAPIRequest(django_request)
94145
validator = RequestValidator(spec)
95146
result = validator.validate(openapi_request)
96147
@@ -101,44 +152,58 @@ or simply specify request factory for shortcuts
101152
from openapi_core import validate_parameters, validate_body
102153
103154
validated_params = validate_parameters(
104-
spec, request, request_factory=FlaskOpenAPIRequest)
155+
spec, request, request_factory=DjangoOpenAPIRequest)
105156
validated_body = validate_body(
106-
spec, request, request_factory=FlaskOpenAPIRequest)
157+
spec, request, request_factory=DjangoOpenAPIRequest)
107158
108-
You can also validate responses
159+
You can use DjangoOpenAPIResponse as a Django response factory:
109160

110161
.. code-block:: python
111162
112163
from openapi_core.shortcuts import ResponseValidator
164+
from openapi_core.contrib.django import DjangoOpenAPIResponse
113165
166+
openapi_response = DjangoOpenAPIResponse(django_response)
114167
validator = ResponseValidator(spec)
115-
result = validator.validate(request, response)
168+
result = validator.validate(openapi_request, openapi_response)
116169
117-
# raise errors if response invalid
118-
result.raise_for_errors()
170+
or simply specify response factory for shortcuts
119171

120-
# get list of errors
121-
errors = result.errors
172+
.. code-block:: python
122173
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:
124185

125186
.. code-block:: python
126187
127-
# get headers
128-
validated_headers = result.headers
188+
from openapi_core.shortcuts import RequestValidator
189+
from openapi_core.contrib.flask import FlaskOpenAPIRequest
129190
130-
# get data
131-
validated_data = result.data
191+
openapi_request = FlaskOpenAPIRequest(flask_request)
192+
validator = RequestValidator(spec)
193+
result = validator.validate(openapi_request)
132194
133-
or use shortcuts for simple validation
195+
or simply specify request factory for shortcuts
134196

135197
.. code-block:: python
136198
137-
from openapi_core import validate_data
199+
from openapi_core import validate_parameters, validate_body
138200
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)
140205
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:
142207

143208
.. code-block:: python
144209
@@ -160,7 +225,12 @@ or simply specify response factory for shortcuts
160225
request_factory=FlaskOpenAPIRequest,
161226
response_factory=FlaskOpenAPIResponse)
162227
228+
Pyramid
229+
*******
230+
231+
See `pyramid_openapi3 <https://github.com/niteoweb/pyramid_openapi3>`_ project.
232+
163233
Related projects
164-
================
234+
################
165235
* `openapi-spec-validator <https://github.com/p1c2u/openapi-spec-validator>`__
166236
* `pyramid_openapi3 <https://github.com/niteoweb/pyramid_openapi3>`__

0 commit comments

Comments
 (0)