See bottle-openapi-3 project.
This section describes integration with Django web framework. The integration supports Django from version 3.0 and above.
Django can be integrated by middleware. Add DjangoOpenAPIMiddleware to your MIDDLEWARE list and define OPENAPI_SPEC
# settings.py
from openapi_core import create_spec
MIDDLEWARE = [
# ...
'openapi_core.contrib.django.middlewares.DjangoOpenAPIMiddleware',
]
OPENAPI_SPEC = create_spec(spec_dict)For Django you can use DjangoOpenAPIRequest a Django request factory:
from openapi_core.validation.request.validators import RequestValidator
from openapi_core.contrib.django import DjangoOpenAPIRequest
openapi_request = DjangoOpenAPIRequest(django_request)
validator = RequestValidator(spec)
result = validator.validate(openapi_request)You can use DjangoOpenAPIResponse as a Django response factory:
from openapi_core.validation.response.validators import ResponseValidator
from openapi_core.contrib.django import DjangoOpenAPIResponse
openapi_response = DjangoOpenAPIResponse(django_response)
validator = ResponseValidator(spec)
result = validator.validate(openapi_request, openapi_response)This section describes integration with Falcon web framework. The integration supports Falcon from version 3.0 and above.
Falcon API can be integrated by FalconOpenAPIMiddleware middleware.
from openapi_core.contrib.falcon.middlewares import FalconOpenAPIMiddleware
openapi_middleware = FalconOpenAPIMiddleware.from_spec(spec)
app = falcon.App(middleware=[openapi_middleware])For Falcon you can use FalconOpenAPIRequest a Falcon request factory:
from openapi_core.validation.request.validators import RequestValidator
from openapi_core.contrib.falcon import FalconOpenAPIRequestFactory
openapi_request = FalconOpenAPIRequestFactory().create(falcon_request)
validator = RequestValidator(spec)
result = validator.validate(openapi_request)You can use FalconOpenAPIResponse as a Falcon response factory:
from openapi_core.validation.response.validators import ResponseValidator
from openapi_core.contrib.falcon import FalconOpenAPIResponseFactory
openapi_response = FalconOpenAPIResponseFactory().create(falcon_response)
validator = ResponseValidator(spec)
result = validator.validate(openapi_request, openapi_response)This section describes integration with Flask web framework.
Flask views can be integrated by FlaskOpenAPIViewDecorator decorator.
from openapi_core.contrib.flask.decorators import FlaskOpenAPIViewDecorator
openapi = FlaskOpenAPIViewDecorator.from_spec(spec)
@app.route('/home')
@openapi
def home():
passIf you want to decorate class based view you can use the decorators attribute:
class MyView(View):
decorators = [openapi]As an alternative to the decorator-based integration, Flask method based views can be integrated by inheritance from FlaskOpenAPIView class.
from openapi_core.contrib.flask.views import FlaskOpenAPIView
class MyView(FlaskOpenAPIView):
pass
app.add_url_rule('/home', view_func=MyView.as_view('home', spec))In Flask, all unmarshalled request data are provided as Flask request object's openapi.parameters attribute
from flask.globals import request
@app.route('/browse/<id>/')
@openapi
def home():
browse_id = request.openapi.parameters.path['id']
page = request.openapi.parameters.query.get('page', 1)You can use FlaskOpenAPIRequest a Flask/Werkzeug request factory:
from openapi_core.validation.request.validators import RequestValidator
from openapi_core.contrib.flask import FlaskOpenAPIRequest
openapi_request = FlaskOpenAPIRequest(flask_request)
validator = RequestValidator(spec)
result = validator.validate(openapi_request)You can use FlaskOpenAPIResponse as a Flask/Werkzeug response factory:
from openapi_core.validation.response.validators import ResponseValidator
from openapi_core.contrib.flask import FlaskOpenAPIResponse
openapi_response = FlaskOpenAPIResponse(flask_response)
validator = ResponseValidator(spec)
result = validator.validate(openapi_request, openapi_response)See pyramid_openapi3 project.
This section describes integration with Requests library.
For Requests you can use RequestsOpenAPIRequest a Requests request factory:
from openapi_core.validation.request.validators import RequestValidator
from openapi_core.contrib.requests import RequestsOpenAPIRequest
openapi_request = RequestsOpenAPIRequest(requests_request)
validator = RequestValidator(spec)
result = validator.validate(openapi_request)You can use RequestsOpenAPIResponse as a Requests response factory:
from openapi_core.validation.response.validators import ResponseValidator
from openapi_core.contrib.requests import RequestsOpenAPIResponse
openapi_response = RequestsOpenAPIResponse(requests_response)
validator = ResponseValidator(spec)
result = validator.validate(openapi_request, openapi_response)See tornado-openapi3 project.