1+ ************
12openapi-core
23************
34
@@ -15,13 +16,13 @@ openapi-core
1516 :target: https://pypi.python.org/pypi/openapi-core
1617
1718About
18- =====
19+ #####
1920
2021Openapi-core is a Python library that adds client-side and server-side support
2122for the `OpenAPI Specification v3.0.0 <https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md >`__.
2223
2324Installation
24- ============
25+ ############
2526
2627Recommended 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
4243Firstly create your specification:
4344
@@ -47,6 +48,9 @@ Firstly create your specification:
4748
4849 spec = create_spec(spec_dict)
4950
51+ Request
52+ *******
53+
5054Now 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+ For Django 2.2 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+
163233Related 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