Skip to main content

Flask extension for using "specification first" principle via OpenAPI specification.

Project description

Flask-First

Flask extension for using "specification first" principle.

Features:

  • Decorator for mapping routes from OpenAPI specification on Python's view functions via Flask.
  • Application Factory supported.
  • Validating path parameters from url.
  • Validating arguments from url.
  • Validating JSON from request.
  • Validating JSON from response.
  • Provides a Swagger UI.

Limitations

  • All specification in one file.
  • Not supported Encoding Object.
  • Not supported Discriminator Object.
  • Not supported XML Object.
  • Not supported Specification Extensions.
  • Not supported OAuthFlowsObject.

Installing

Install and update using pip:

$ pip install flask_first

Simple example

OpenAPI 3 specification file openapi.yaml:

openapi: 3.0.3
info:
  title: Simple API for Flask-First
  version: 1.0.0
paths:
  /{name}:
    parameters:
      - name: name
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: index
      summary: Returns a list of items
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string

File with application initialization main.py:

import os

from flask import Flask
from flask_first import First

basedir = os.path.abspath(os.path.dirname(__file__))
path_to_spec = os.path.join(basedir, 'openapi.yaml')

app = Flask(__name__)
app.config['FIRST_RESPONSE_VALIDATION'] = True
First(path_to_spec, app=app, swagger_ui_path='/docs')


@app.specification
def index(name):
    return {'message': name}


if __name__ == '__main__':
    app.run()

Run application:

$ python main.py

Check url in browser http://127.0.0.1:5000/username. Check SwaggerUI url in browser http://127.0.0.1:5000/docs.

Settings

FIRST_RESPONSE_VALIDATION - Default: False. Enabling response body validation. Useful when developing. May be disabled in a production environment.

Additional documentation

Project details


Download files

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

Source Distribution

Flask-First-0.7.0.tar.gz (470.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

Flask_First-0.7.0-py3-none-any.whl (468.5 kB view details)

Uploaded Python 3

File details

Details for the file Flask-First-0.7.0.tar.gz.

File metadata

  • Download URL: Flask-First-0.7.0.tar.gz
  • Upload date:
  • Size: 470.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10

File hashes

Hashes for Flask-First-0.7.0.tar.gz
Algorithm Hash digest
SHA256 7c9b022d766d43d3454dacbec5d6d71c2780c31514370de92a3eacfe07a9c5b1
MD5 774c8665c0497fb1dccefe74838039e7
BLAKE2b-256 4771ecb80172648da72aa694fea4398ae8cdf73f690a70d6aaaa04f1bb50d990

See more details on using hashes here.

File details

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

File metadata

  • Download URL: Flask_First-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 468.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10

File hashes

Hashes for Flask_First-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9d8100e85f9aa25a475e0c88c01f639f16f59a3e19a4803376ffb0cfa8358bbf
MD5 a2b22a19a59ff9e0e36a594da1e72cf1
BLAKE2b-256 94395aa9b890b770781792676d821eb518911610448274c1d8d29d717138ac8e

See more details on using hashes here.

Supported by

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