Skip to main content

No project description provided

Project description

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

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:

from openapi_core import create_spec

spec = create_spec(spec_dict)

Now you can use it to validate requests

from openapi_core.shortcuts import RequestValidator

validator = RequestValidator(spec)
result = validator.validate(request)

# raise errors if request invalid
result.raise_for_errors()

# get list of errors
errors = result.errors

and unmarshal request data from validation result

# get parameters dictionary with path, query, cookies and headers parameters
validated_params = result.parameters

# get body
validated_body = result.body

or use shortcuts for simple validation

from openapi_core import validate_parameters, validate_body

validated_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:

from openapi_core.shortcuts import RequestValidator
from openapi_core.wrappers.flask import FlaskOpenAPIRequest

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

or specify request wrapper class for shortcuts

from openapi_core import validate_parameters, validate_body

validated_params = validate_parameters(
    spec, request, wrapper_class=FlaskOpenAPIRequest)
validated_body = validate_body(
    spec, request, wrapper_class=FlaskOpenAPIRequest)

You can also validate responses

from openapi_core.validators import ResponseValidator

validator = ResponseValidator(spec)
result = validator.validate(request, response)

# raise errors if response invalid
result.raise_for_errors()

# get list of errors
errors = result.errors

and unmarshal response data from validation result

# get headers
validated_headers = result.headers

# get data
validated_data = result.data

or use shortcuts for simple validation

from openapi_core import validate_data

validated_data = validate_data(spec, request, response)

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

from openapi_core.shortcuts import ResponseValidator
from openapi_core.wrappers.flask import FlaskOpenAPIResponse

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

or specify response wrapper class for shortcuts

from openapi_core import validate_parameters, validate_body

validated_data = validate_data(
    spec, request, response, response_wrapper_class=FlaskOpenAPIResponse)

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openapi-core-0.7.0.tar.gz (19.8 kB view details)

Uploaded Source

Built Distributions

openapi_core-0.7.0-py3-none-any.whl (40.0 kB view details)

Uploaded Python 3

openapi_core-0.7.0-py2-none-any.whl (40.0 kB view details)

Uploaded Python 2

File details

Details for the file openapi-core-0.7.0.tar.gz.

File metadata

  • Download URL: openapi-core-0.7.0.tar.gz
  • Upload date:
  • Size: 19.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.4.6

File hashes

Hashes for openapi-core-0.7.0.tar.gz
Algorithm Hash digest
SHA256 32692c171795669e10b77834f5dcee288e17e0dd15db8301ad97863abcd022ac
MD5 95c081d9b051fb514545406214b97fa4
BLAKE2b-256 371e780b34c10f3152a34cc3d96dc65664781db260b0b76c240a18753eae08f0

See more details on using hashes here.

File details

Details for the file openapi_core-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: openapi_core-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 40.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.4.6

File hashes

Hashes for openapi_core-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7b588381e3072be4c18d50cfd1bff15ce3d1c12086ebf57b5d973da9e57d10b6
MD5 18f68b5da46784e81eaabc4bb3154867
BLAKE2b-256 192791ec8a594161f7e515d00f0e128e6243545fb9a03bb197f5e0dd597de9aa

See more details on using hashes here.

File details

Details for the file openapi_core-0.7.0-py2-none-any.whl.

File metadata

  • Download URL: openapi_core-0.7.0-py2-none-any.whl
  • Upload date:
  • Size: 40.0 kB
  • Tags: Python 2
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/2.7.14

File hashes

Hashes for openapi_core-0.7.0-py2-none-any.whl
Algorithm Hash digest
SHA256 879ac84f6f79b3196819129977124a8c8aa839f20d08fce07a33428a6e10a274
MD5 678ff79e77356f17ba91ed07508053d5
BLAKE2b-256 1b48ac1739b0c6c0c4c991115d7fd8880645af9d17687e8d297c45f58ed683ba

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page