Bottle OpenAPI 3 Plugin

May 12, 2021 ยท View on GitHub

========================== Bottle OpenAPI 3 Plugin


About

The Bottle OpenAPI 3 Plugin is a toolkit for performing validation of requests against an OpenAPI document for Bottle <https://bottlepy.org/docs/0.12/>_ applications. It is built on the openapi-core <https://github.com/p1c2u/openapi-core>_ and openapi-spec-validator <https://github.com/p1c2u/openapi-spec-validator>_ libraries, and supports the OpenAPI 3 specification <https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md>_.


License

This codebase is MIT licensed.


Requirements

A relatively recent version of Python (3.5+) is required. This plugin depends on the aforementioned openapi-core and openapi-spec-validator libraries, and also requires a relatively recent version of bottle (0.12+).


Quickstart

The Bottle OpenAPI 3 plugin may either be installed from pypi <https://pypi.org/project/bottle-openapi-3/>_ as the bottle-openapi-3 package:

pip install bottle-openapi-3

or may be installed from source from the git repository <https://github.com/cope-systems/bottle-openapi-3>_:

python setup.py install

Once the plugin is installed, it may be used in a Bottle application by loading the OpenAPI schema and installing the plugin. An example:

.. code-block:: python

import bottle
import yaml
from bottle_openapi_3 import OpenAPIPlugin

app = bottle.Bottle()

with open("swagger.yaml") as f:
    spec = yaml.load(f)

@app.route("/api/foo")
def foo_handler():
    return {"foo": "bar"}

app.install(OpenAPIPlugin(spec))

app.run()

The example's specification:

.. code-block:: yaml

openapi: 3.0.0
info:
  title: My API
servers:
  - url: /api
paths:
  /foo:
    get:
       summary: Fetch an object
       responses:
         "200":
            description: "An object was successfully generated."
            content:
              application/json:
                schema: {"type": "object"}

Advanced Usage

TODO


Changelog

0.1.2 (May 2021)


Fixed an issue decoding the request body for HTTP methods like POST, PUT, etc.

0.1.0 (Jan 2021)


Initial alpha release of the OpenAPI 3 plugin for Bottle. Most functionality should be implemented.