Skip to main content

Extract swagger specs from your flask project

Project description

A swagger 2.0 spec extractor for flask

Install:

pip install flask-swagger

flask-swagger provides a method (swagger) that inspects the flask app for endpoints that contain YAML docstrings with swagger 2.0 Operation objects.

class UserAPI(MethodView):

    def post(self):
        """
        Create a new user
        ---
        tags:
          - users
        parameters:
          - in: body
            name: body
            schema:
              id: User
              required:
                - email
                - name
              properties:
                email:
                  type: string
                  description: email for user
                name:
                  type: string
                  description: name for user
        responses:
          201:
            description: User created
        """
        return {}

flask-swagger supports docstrings in MethodView classes and regular flask view functions.

Following YAML conventions, flask-swagger searches for ---, everything preceding is provided as summary (first line) and description (following lines) for the endpoint while everything after is parsed as a swagger Operation object.

In order to support inline definition of Schema objects in Operation and Response items, flask-swagger veers a little off from the standard. We require an id field for the inline Schema which is then used to correctly place the Schema object in the Definitions object.

To expose your swagger specification to the world you provide a flask route that does something along these lines

from flask import Flask, jsonify
from flask_swagger import swagger

app = Flask(__name__)

@app.route("/spec")
def spec():
    return jsonify(swagger(app))

Note that the swagger specification returned by swagger(app) is as minimal as it can be. It’s your job to override and add to the specification as you see fit.

@app.route("/spec")
def spec():
    swag = swagger(app)
    swag['info']['version'] = "1.0"
    swag['info']['title'] = "My API"
    return jsonify(swag)

Swagger-UI

Swagger-UI is the reason we embarked on this mission to begin with, flask-swagger does not however include Swagger-UI. Simply follow the awesome documentation over at https://github.com/swagger-api/swagger-ui and point your swaggerUi.url to your new flask-swagger endpoint and enjoy.

Acknowledgments

flask-swagger builds on ideas and code from flask-sillywalk and flask-restful-swagger

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-swagger-0.2.1.tar.gz (5.0 kB view details)

Uploaded Source

File details

Details for the file flask-swagger-0.2.1.tar.gz.

File metadata

  • Download URL: flask-swagger-0.2.1.tar.gz
  • Upload date:
  • Size: 5.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for flask-swagger-0.2.1.tar.gz
Algorithm Hash digest
SHA256 8178802b14b1ebee7707ffb949b1fd4999a238c89e6e67cbb388cbc72a008eb0
MD5 526517b7ddbded4e7e1240d67575c282
BLAKE2b-256 7a7980535803c9239a302c3853a1894f69f3f0efc144135b0a2f4786169bdd9c

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