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:

  • Application Factory supported.
  • Serializing request.args and storing result in request.first_args.
  • Validating path parameters from url.
  • Validating arguments from url.
  • Validating JSON from request.
  • Validating JSON from response.
  • Provides a Swagger UI.

Limitations

  • Full specification in one file.

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 = First(path_to_spec, app=app, swagger_ui_path='/docs')

def index(name):
    return {'message': name}

first.add_view_func(index)

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.9.0.tar.gz (468.1 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.9.0-py3-none-any.whl (465.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: Flask-First-0.9.0.tar.gz
  • Upload date:
  • Size: 468.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 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.9.0.tar.gz
Algorithm Hash digest
SHA256 1e7de09496b76630dca255bd1cf6a829c9905470b0541eda8c236524ca11f071
MD5 573d67b1514e801855fbcd676b39e6ba
BLAKE2b-256 b6273d7ced7beae501c6dcba70f827a4d502770a2209d72959222453732ff1b3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: Flask_First-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 465.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 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.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3a3b5ee24150120455b9c732b272220eacb87dce332059b75ebd5d605dc4e5bc
MD5 33331acc27f8d914144b172ece04fbb6
BLAKE2b-256 b259962953edf4785d838ffd813cf1cc428b9a5b482cb097f9f1a48fc9f81e67

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