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.
  • 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 = 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.8.1.tar.gz (471.0 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.8.1-py3-none-any.whl (468.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: Flask-First-0.8.1.tar.gz
  • Upload date:
  • Size: 471.0 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.8.1.tar.gz
Algorithm Hash digest
SHA256 a09ad3954b77e428cbf68f3bfdf697abd32ec06f9aa26dfed78cc56e3ff19002
MD5 83f56e6428394d72c4882b24e3a326c4
BLAKE2b-256 f7e828e0902999bc59e76aabd15b50b7fd67b6127dd882f97843cc9d8f21ffa2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: Flask_First-0.8.1-py3-none-any.whl
  • Upload date:
  • Size: 468.6 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.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7cb4e57a15dc01811df7a2ebfdc13ff42180feee973072be04517946d5d5f41f
MD5 e509d80589c7bfde609fc16a35a59fde
BLAKE2b-256 9fe2e79b77cc5c0b7f623570c6cdfe884c6d928683a2372989cbfde97e5810b2

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