Skip to main content

Building blocks for REST APIs for Flask

Project description

Building blocks for REST APIs for Flask.



Create a SQLAlchemy model and a marshmallow schema, then:

from flask_resty import Api, GenericModelView

from . import app, models, schemas

class WidgetViewBase(GenericModelView):
    model = models.Widget
    schema = models.WidgetSchema()

class WidgetListView(WidgetViewBase):
    def get(self):
        return self.list()

    def post(self):
        return self.create()

class WidgetView(WidgetViewBase):
    def get(self, id):
        return self.retrieve(id)

    def patch(self, id):
        return self.update(id, partial=True)

    def delete(self, id):
        return self.destroy(id)

api = Api(app, '/api')
api.add_resource('/widgets', WidgetListView, WidgetView)

By default, models are expected to have been created using Flask-SQLAlchemy.

from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import Column, String

from . import app

db = SQLAlchemy(app)

class Widget(db.Model):
    id = Column(String, primary_key=True)
    name = Column(String, nullable=False)
    color = Column(String, nullable=False)

Schemas can be standard marshmallow Schema instances or marshmallow-sqlalchemy TableSchema instances. They should not be ModelSchema instances.

from marshmallow_sqlalchemy import TableSchema

from . import models

class WidgetSchema(TableSchema):
    class Meta:
        table = models.Widget.__table__

Project details

Download files

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

Filename, size & hash SHA256 hash help File type Python version Upload date
Flask_RESTy-0.20.5-py2.py3-none-any.whl (26.3 kB) Copy SHA256 hash SHA256 Wheel py2.py3
Flask-RESTy-0.20.5.tar.gz (19.0 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page