Skip to content

Repository files navigation

openapi-core

https://travis-ci.org/p1c2u/openapi-core.svg?branch=masterhttps://img.shields.io/codecov/c/github/p1c2u/openapi-core/master.svg?style=flat

About

Openapi-core is a Python library that adds client-side and server-side support for the OpenAPI Specification v3.0.0.

Installation

Recommended way (via pip):

$ pip install openapi-core

Alternatively you can download the code and install from the repository:

$ pip install -e git+https://github.com/p1c2u/openapi-core.git#egg=openapi_core

Usage

Firstly create your specification:

fromopenapi_coreimportcreate_specspec=create_spec(spec_dict)

Now you can use it to validate requests

fromopenapi_core.validatorsimportRequestValidatorvalidator=RequestValidator(spec)
result=validator.validate(request)
# raise errors if request invalidresult.raise_for_errors()
# get list of errorserrors=result.errors

and unmarshal request data from validation result

# get parameters dictionary with path, query, cookies and headers parametersvalidated_params=result.parameters# get bodyvalidated_body=result.body

or use shortcuts for simple validation

fromopenapi_coreimportvalidate_parameters, validate_bodyvalidated_params=validate_parameters(spec, request)
validated_body=validate_body(spec, request)

Request object should implement BaseOpenAPIRequest interface. You can use FlaskOpenAPIRequest a Flask/Werkzeug request wrapper implementation:

fromopenapi_core.validatorsimportRequestValidatorfromopenapi_core.wrappersimportFlaskOpenAPIRequestopenapi_request=FlaskOpenAPIRequest(flask_request)
validator=RequestValidator(spec)
result=validator.validate(openapi_request)

or specify request wrapper class for shortcuts

fromopenapi_coreimportvalidate_parameters, validate_bodyvalidated_params=validate_parameters(
spec, request, wrapper_class=FlaskOpenAPIRequest)
validated_body=validate_body(
spec, request, wrapper_class=FlaskOpenAPIRequest)

You can also validate responses

fromopenapi_core.validatorsimportResponseValidatorvalidator=ResponseValidator(spec)
result=validator.validate(request, response)
# raise errors if response invalidresult.raise_for_errors()
# get list of errorserrors=result.errors

and unmarshal response data from validation result

# get headersvalidated_headers=result.headers# get datavalidated_data=result.data

or use shortcuts for simple validation

fromopenapi_coreimportvalidate_datavalidated_data=validate_data(spec, request, response)

Response object should implement BaseOpenAPIResponse interface. You can use FlaskOpenAPIResponse a Flask/Werkzeug response wrapper implementation:

fromopenapi_core.validatorsimportResponseValidatorfromopenapi_core.wrappersimportFlaskOpenAPIResponseopenapi_response=FlaskOpenAPIResponse(flask_response)
validator=ResponseValidator(spec)
result=validator.validate(openapi_request, openapi_response)

or specify response wrapper class for shortcuts

fromopenapi_coreimportvalidate_parameters, validate_bodyvalidated_data=validate_data(
spec, request, response, response_wrapper_class=FlaskOpenAPIResponse)

Related projects

About

OpenAPI core

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages