Skip to content

Commit b9a8477

Browse files
committed
Response validated_data shortcut
1 parent fda4615 commit b9a8477

File tree

2 files changed

+47
-2
lines changed

2 files changed

+47
-2
lines changed

README.rst

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,34 @@ and unmarshal response data from validation result
128128
# get data
129129
validated_data = result.data
130130
131+
or use shortcuts for simple validation
132+
133+
.. code-block:: python
134+
135+
from openapi_core import validate_data
136+
137+
validated_data = validate_data(spec, request, response)
138+
139+
Response object should implement BaseOpenAPIResponse interface. You can use FlaskOpenAPIResponse a Flask/Werkzeug response wrapper implementation:
140+
141+
.. code-block:: python
142+
143+
from openapi_core.validators import ResponseValidator
144+
from openapi_core.wrappers import FlaskOpenAPIResponse
145+
146+
openapi_response = FlaskOpenAPIResponse(flask_response)
147+
validator = ResponseValidator(spec)
148+
result = validator.validate(openapi_request, openapi_response)
149+
150+
or specify response wrapper class for shortcuts
151+
152+
.. code-block:: python
153+
154+
from openapi_core import validate_parameters, validate_body
155+
156+
validated_data = validate_data(
157+
spec, request, response, response_wrapper_class=FlaskOpenAPIResponse)
158+
131159
Related projects
132160
================
133161
* `openapi-spec-validator <https://github.com/p1c2u/openapi-spec-validator>`__

openapi_core/shortcuts.py

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55

66
from openapi_core.exceptions import OpenAPIParameterError, OpenAPIBodyError
77
from openapi_core.specs import SpecFactory
8-
from openapi_core.validators import RequestValidator
9-
from openapi_core.wrappers import FlaskOpenAPIRequest
8+
from openapi_core.validators import RequestValidator, ResponseValidator
9+
from openapi_core.wrappers import FlaskOpenAPIRequest, FlaskOpenAPIResponse
1010

1111

1212
def create_spec(spec_dict, spec_url=''):
@@ -43,3 +43,20 @@ def validate_body(spec, request, wrapper_class=FlaskOpenAPIRequest):
4343
return result.body
4444
else:
4545
return result.body
46+
47+
48+
def validate_data(
49+
spec, request, response,
50+
request_wrapper_class=FlaskOpenAPIRequest,
51+
response_wrapper_class=FlaskOpenAPIResponse):
52+
if request_wrapper_class:
53+
request = request_wrapper_class(request)
54+
if response_wrapper_class:
55+
response = response_wrapper_class(response)
56+
57+
validator = ResponseValidator(spec)
58+
result = validator.validate(request, response)
59+
60+
result.raise_for_errors()
61+
62+
return result.data

0 commit comments

Comments
 (0)