srgkm / openapi-core

OpenAPI core

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

openapi-core

image

image

image

image

image

image

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)

Request

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 object with path, query, cookies and headers parameters
validated_params = result.parameters
# or specific parameters
validated_path_params = result.parameters.path

# 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 be instance of OpenAPIRequest class (See Integrations).

Response

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 be instance of OpenAPIResponse class (See Integrations).

Integrations

Django

For Django 2.2 you can use DjangoOpenAPIRequest a Django request factory:

from openapi_core.shortcuts import RequestValidator
from openapi_core.contrib.django import DjangoOpenAPIRequest

openapi_request = DjangoOpenAPIRequest(django_request)
validator = RequestValidator(spec)
result = validator.validate(openapi_request)

or simply specify request factory for shortcuts

from openapi_core import validate_parameters, validate_body

validated_params = validate_parameters(
    spec, request, request_factory=DjangoOpenAPIRequest)
validated_body = validate_body(
    spec, request, request_factory=DjangoOpenAPIRequest)

You can use DjangoOpenAPIResponse as a Django response factory:

from openapi_core.shortcuts import ResponseValidator
from openapi_core.contrib.django import DjangoOpenAPIResponse

openapi_response = DjangoOpenAPIResponse(django_response)
validator = ResponseValidator(spec)
result = validator.validate(openapi_request, openapi_response)

or simply specify response factory for shortcuts

from openapi_core import validate_parameters, validate_body

validated_data = validate_data(
    spec, request, response,
    request_factory=DjangoOpenAPIRequest,
    response_factory=DjangoOpenAPIResponse)

Flask

You can use FlaskOpenAPIRequest a Flask/Werkzeug request factory:

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

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

or simply specify request factory for shortcuts

from openapi_core import validate_parameters, validate_body

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

You can use FlaskOpenAPIResponse as a Flask/Werkzeug response factory:

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

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

or simply specify response factory for shortcuts

from openapi_core import validate_parameters, validate_body

validated_data = validate_data(
    spec, request, response,
    request_factory=FlaskOpenAPIRequest,
    response_factory=FlaskOpenAPIResponse)

Pyramid

See pyramid_openapi3 project.

About

OpenAPI core

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:Python 99.7%Language:Makefile 0.3%