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.shortcuts 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.11.1.tar.gz (22.4 kB view details)

Uploaded Source

Built Distributions

openapi_core-0.11.1-py3-none-any.whl (44.2 kB view details)

Uploaded Python 3

openapi_core-0.11.1-py2-none-any.whl (44.2 kB view details)

Uploaded Python 2

File details

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

File metadata

  • Download URL: openapi-core-0.11.1.tar.gz
  • Upload date:
  • Size: 22.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/2.7.15

File hashes

Hashes for openapi-core-0.11.1.tar.gz
Algorithm Hash digest
SHA256 33c73af42e87ed80f150b5ec3184dfad2952f9e326e84c56bc8c88da35a8c6e6
MD5 ebcfeca73f01170c8fee08b97dad8146
BLAKE2b-256 ca50fa2e7c0cfd072c883558e2b98d73c096f946dd4dd7eb7aef90238a7e9e31

See more details on using hashes here.

File details

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

File metadata

  • Download URL: openapi_core-0.11.1-py3-none-any.whl
  • Upload date:
  • Size: 44.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.6.7

File hashes

Hashes for openapi_core-0.11.1-py3-none-any.whl
Algorithm Hash digest
SHA256 035f66a1380c27d594a2993a92e2ab67fdede48d879e14f6f2c2928f22889876
MD5 aec0713d24bd2edb593f0d8582a1ed3d
BLAKE2b-256 e9710058f333274a3137ef66076e9a6d370f69aa72ab70f643600427c2ef0299

See more details on using hashes here.

File details

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

File metadata

  • Download URL: openapi_core-0.11.1-py2-none-any.whl
  • Upload date:
  • Size: 44.2 kB
  • Tags: Python 2
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/2.7.15

File hashes

Hashes for openapi_core-0.11.1-py2-none-any.whl
Algorithm Hash digest
SHA256 4a295685577d5d2edfffe48162b6bc094e3fe1039e51d9134834caa88aa7eb99
MD5 221fc9c77e9b2a910d910cef0414fa5c
BLAKE2b-256 031e716ce43b050994453926cdb3eeb106e5c4b5a470bfab20d6c1e2000e4734

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