@@ -4,15 +4,55 @@ Integrations
4
4
Bottle
5
5
------
6
6
7
- See `bottle-openapi-3 <https://github.com/cope-systems/bottle-openapi-3 >`_ project.
7
+ See `bottle-openapi-3 <https://github.com/cope-systems/bottle-openapi-3 >`_ project.
8
8
9
9
10
10
Django
11
11
------
12
12
13
13
This section describes integration with `Django <https://www.djangoproject.com >`__ web framework.
14
+ The integration supports Django from version 3.0 and above.
14
15
15
- For Django 2.2 you can use DjangoOpenAPIRequest a Django request factory:
16
+ Middleware
17
+ ~~~~~~~~~~
18
+
19
+ Django can be integrated by middleware. Add `DjangoOpenAPIMiddleware ` to your `MIDDLEWARE ` list and define `OPENAPI_SPEC `.
20
+
21
+ .. code-block :: python
22
+
23
+ # settings.py
24
+ from openapi_core import create_spec
25
+
26
+ MIDDLEWARE = [
27
+ # ...
28
+ ' openapi_core.contrib.django.middlewares.DjangoOpenAPIMiddleware' ,
29
+ ]
30
+
31
+ OPENAPI_SPEC = create_spec(spec_dict)
32
+
33
+ After that you have access to validation result object with all validated request data from Django view through request object.
34
+
35
+ .. code-block :: python
36
+
37
+ from django.views import View
38
+
39
+ class MyView (View ):
40
+ def get (self , req ):
41
+ # get parameters object with path, query, cookies and headers parameters
42
+ validated_params = req.openapi.parameters
43
+ # or specific location parameters
44
+ validated_path_params = req.openapi.parameters.path
45
+
46
+ # get body
47
+ validated_body = req.openapi.body
48
+
49
+ # get security data
50
+ validated_security = req.openapi.security
51
+
52
+ Low level
53
+ ~~~~~~~~~
54
+
55
+ You can use `DjangoOpenAPIRequest ` as a Django request factory:
16
56
17
57
.. code-block :: python
18
58
@@ -23,7 +63,7 @@ For Django 2.2 you can use DjangoOpenAPIRequest a Django request factory:
23
63
validator = RequestValidator(spec)
24
64
result = validator.validate(openapi_request)
25
65
26
- You can use DjangoOpenAPIResponse as a Django response factory:
66
+ You can use ` DjangoOpenAPIResponse ` as a Django response factory:
27
67
28
68
.. code-block :: python
29
69
@@ -39,41 +79,59 @@ Falcon
39
79
------
40
80
41
81
This section describes integration with `Falcon <https://falconframework.org >`__ web framework.
82
+ The integration supports Falcon from version 3.0 and above.
42
83
43
84
Middleware
44
85
~~~~~~~~~~
45
86
46
- Falcon API can be integrated by `FalconOpenAPIMiddleware ` middleware.
87
+ The Falcon API can be integrated by `FalconOpenAPIMiddleware ` middleware.
47
88
48
89
.. code-block :: python
49
90
50
91
from openapi_core.contrib.falcon.middlewares import FalconOpenAPIMiddleware
51
92
52
93
openapi_middleware = FalconOpenAPIMiddleware.from_spec(spec)
53
- api = falcon.API(middleware = [openapi_middleware])
94
+ app = falcon.App(middleware = [openapi_middleware])
95
+
96
+ After that you will have access to validation result object with all validated request data from Falcon view through request context.
97
+
98
+ .. code-block :: python
99
+
100
+ class ThingsResource :
101
+ def on_get (self , req , resp ):
102
+ # get parameters object with path, query, cookies and headers parameters
103
+ validated_params = req.context.openapi.parameters
104
+ # or specific location parameters
105
+ validated_path_params = req.context.openapi.parameters.path
106
+
107
+ # get body
108
+ validated_body = req.context.openapi.body
109
+
110
+ # get security data
111
+ validated_security = req.context.openapi.security
54
112
55
113
Low level
56
114
~~~~~~~~~
57
115
58
- For Falcon you can use FalconOpenAPIRequest a Falcon request factory:
116
+ You can use ` FalconOpenAPIRequest ` as a Falcon request factory:
59
117
60
118
.. code-block :: python
61
119
62
120
from openapi_core.validation.request.validators import RequestValidator
63
121
from openapi_core.contrib.falcon import FalconOpenAPIRequestFactory
64
122
65
- openapi_request = FalconOpenAPIRequestFactory.create(falcon_request)
123
+ openapi_request = FalconOpenAPIRequestFactory() .create(falcon_request)
66
124
validator = RequestValidator(spec)
67
125
result = validator.validate(openapi_request)
68
126
69
- You can use FalconOpenAPIResponse as a Falcon response factory:
127
+ You can use ` FalconOpenAPIResponse ` as a Falcon response factory:
70
128
71
129
.. code-block :: python
72
130
73
131
from openapi_core.validation.response.validators import ResponseValidator
74
132
from openapi_core.contrib.falcon import FalconOpenAPIResponseFactory
75
133
76
- openapi_response = FalconOpenAPIResponseFactory.create(falcon_response)
134
+ openapi_response = FalconOpenAPIResponseFactory() .create(falcon_response)
77
135
validator = ResponseValidator(spec)
78
136
result = validator.validate(openapi_request, openapi_response)
79
137
@@ -109,7 +167,7 @@ If you want to decorate class based view you can use the decorators attribute:
109
167
View
110
168
~~~~
111
169
112
- As an alternative to the decorator-based integration, Flask method based views can be integrated by inheritance from `FlaskOpenAPIView ` class.
170
+ As an alternative to the decorator-based integration, a Flask method based views can be integrated by inheritance from `FlaskOpenAPIView ` class.
113
171
114
172
.. code-block :: python
115
173
@@ -123,7 +181,7 @@ As an alternative to the decorator-based integration, Flask method based views c
123
181
Request parameters
124
182
~~~~~~~~~~~~~~~~~~
125
183
126
- In Flask, all unmarshalled request data are provided as Flask request object's openapi.parameters attribute
184
+ In Flask, all unmarshalled request data are provided as Flask request object's ` openapi.parameters ` attribute
127
185
128
186
.. code-block :: python
129
187
@@ -138,7 +196,7 @@ In Flask, all unmarshalled request data are provided as Flask request object's o
138
196
Low level
139
197
~~~~~~~~~
140
198
141
- You can use FlaskOpenAPIRequest a Flask/Werkzeug request factory:
199
+ You can use ` FlaskOpenAPIRequest ` as a Flask/Werkzeug request factory:
142
200
143
201
.. code-block :: python
144
202
@@ -149,7 +207,7 @@ You can use FlaskOpenAPIRequest a Flask/Werkzeug request factory:
149
207
validator = RequestValidator(spec)
150
208
result = validator.validate(openapi_request)
151
209
152
- You can use FlaskOpenAPIResponse as a Flask/Werkzeug response factory:
210
+ You can use ` FlaskOpenAPIResponse ` as a Flask/Werkzeug response factory:
153
211
154
212
.. code-block :: python
155
213
@@ -164,7 +222,7 @@ You can use FlaskOpenAPIResponse as a Flask/Werkzeug response factory:
164
222
Pyramid
165
223
-------
166
224
167
- See `pyramid_openapi3 <https://github.com/niteoweb/pyramid_openapi3 >`_ project.
225
+ See `pyramid_openapi3 <https://github.com/niteoweb/pyramid_openapi3 >`_ project.
168
226
169
227
170
228
Requests
@@ -175,7 +233,7 @@ This section describes integration with `Requests <https://requests.readthedocs.
175
233
Low level
176
234
~~~~~~~~~
177
235
178
- For Requests you can use RequestsOpenAPIRequest a Requests request factory:
236
+ You can use ` RequestsOpenAPIRequest ` as a Requests request factory:
179
237
180
238
.. code-block :: python
181
239
@@ -186,7 +244,7 @@ For Requests you can use RequestsOpenAPIRequest a Requests request factory:
186
244
validator = RequestValidator(spec)
187
245
result = validator.validate(openapi_request)
188
246
189
- You can use RequestsOpenAPIResponse as a Requests response factory:
247
+ You can use ` RequestsOpenAPIResponse ` as a Requests response factory:
190
248
191
249
.. code-block :: python
192
250
@@ -200,4 +258,4 @@ You can use RequestsOpenAPIResponse as a Requests response factory:
200
258
Tornado
201
259
-------
202
260
203
- See `tornado-openapi3 <https://github.com/correl/tornado-openapi3 >`_ project.
261
+ See `tornado-openapi3 <https://github.com/correl/tornado-openapi3 >`_ project.
0 commit comments