Flask-RESTy provides building blocks for creating REST APIs with Flask , SQLAlchemy, and marshmallow.

from flask_resty import Api, GenericModelView

from .models import Widget
from .schemas import WidgetSchema

class WidgetViewBase(GenericModelView):
    model = Widget
    schema = 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)


Flask-RESty provides the following functionality out of the box:

  • Class-based CRUD views

  • Schema-based request validation and response formatting with marshmallow

  • JWT and JWK authentication, with base classes for implementing your own authentication policies

  • Authorization

  • Sorting and pagination

  • Filtering


Flask-RESTy requires Python >= 3.6.

$ pip install flask-resty

For JWT support:

$ pip install flask-resty[jwt]