Build and document REST APIs with Flask and apispec
Project description
flask-apispec is a lightweight tool for building REST APIs in Flask. flask-apispec uses webargs for request parsing, marshmallow for response formatting, and apispec to automatically generate Swagger markup. You can use flask-apispec with vanilla Flask or a fuller-featured framework like Flask-RESTful.
Install
pip install flask-apispec
Quickstart
from flask import Flask from flask_apispec import use_kwargs, marshal_with from marshmallow import Schema from webargs import fields from .models import Pet app = Flask(__name__) class PetSchema(Schema): class Meta: fields = ('name', 'category', 'size') @app.route('/pets') @use_kwargs({'category': fields.Str(), 'size': fields.Str()}) @marshal_with(PetSchema(many=True)) def get_pets(**kwargs): return Pet.query.filter_by(**kwargs)
flask-apispec works with function- and class-based views:
from flask import make_response from flask_apispec.views import MethodResource class PetResource(MethodResource): @marshal_with(PetSchema) def get(self, pet_id): return Pet.query.filter(Pet.id == pet_id).one() @use_kwargs(PetSchema) @marshal_with(PetSchema, code=201) def post(self, **kwargs): return Pet(**kwargs) @use_kwargs(PetSchema) @marshal_with(PetSchema) def put(self, pet_id, **kwargs): pet = Pet.query.filter(Pet.id == pet_id).one() pet.__dict__.update(**kwargs) return pet @marshal_with(None, code=204) def delete(self, pet_id): pet = Pet.query.filter(Pet.id == pet_id).one() pet.delete() return make_response('', 204)
flask-apispec generates Swagger markup for your view functions and classes. By default, Swagger JSON is served at /swagger/, and Swagger-UI at /swagger-ui/.
from apispec import APISpec from apispec.ext.marshmallow import MarshmallowPlugin from flask_apispec.extension import FlaskApiSpec app.config.update({ 'APISPEC_SPEC': APISpec( title='pets', version='v1', plugins=[MarshmallowPlugin()], ), 'APISPEC_SWAGGER_URL': '/swagger/', }) docs = FlaskApiSpec(app) docs.register(get_pets) docs.register(PetResource)
Documentation
Notes
flask-apispec is strongly inspired by Flask-RESTful and Flask-RESTplus, but attempts to provide similar functionality with greater flexibility and less code.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size flask_apispec-0.11.0-py2.py3-none-any.whl (2.3 MB) | File type Wheel | Python version py2.py3 | Upload date | Hashes View |
Filename, size flask-apispec-0.11.0.tar.gz (2.3 MB) | File type Source | Python version None | Upload date | Hashes View |
Hashes for flask_apispec-0.11.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7e82dabcac4234c1540438daac045e8475804b4dcf7f68898ffc47113ab34da0 |
|
MD5 | 85715970417a39f06ca9d2cd44407d38 |
|
BLAKE2-256 | be5d3d0de876c918fca2f6a3765edfec5bffc82c16729b7ec63874ad66f6dbab |