Creating a RESTful API using Flask? Creating a RESTful API using Flask? flask flask

Creating a RESTful API using Flask?


Short answer:

restful.Resource is from a Flask-Restful extension, which is not Flask itself. Miguel's tutorial uses Flask to write a restful interface.

Long answer:

First of all, along with Flask, there are a number of Flask extensions. Although they work together, they are separate packages and are written by individual authors. Flask-Restful is an extension to Flask.

Miguel's tutorial explains how you can make a restful api using Flask by itself.

Flask-Restful with the aim to saving some of us from re-inventing the wheel, promises to turn a custom class(or a custom Python data structure) to a restful web service. Flask-RESTX, a fork of Flask-Restful, auto-generates api documentation with swagger UI.

In addition, Flask also documented the usage of MethodView to allow developers to write their own restful APIs. In parallel, Flask-Restless promises to turn a SqlAlchemy class into a restful web service.

An update(18/07/2016), flask-api turns a function/view into a restful interface and is designed by Tom Christie, the author of django restful framework.

an update(17/03/2021), Flask-RESTPlus does smiliar things as above libraries but it also helps you construct swagger API documentation, which is an extra bonus.

There are many roads to Roma.


Using methods instead of classes can quickly become confusing when lots of endpoints are needed. Classes/resource are a better way of separating and decoupling logic. Plus your code becomes much more readable and easier to change/fix

Using flask-restful is probably the best way, although I will have some work to do in order to create the blueprint for your api, configuring routing, handling the request parameters, and many things that every normal api needs, that gets quite annoying.

I have built this lightweight framework on top of flask-restful that lets you build restful apis easily without worrying about all the wiring needed, and just focus on defining your api and coding the business logic. You can check it out here: https://github.com/sebastiandev/peach

It is more oriented to NOSQL databases, but thats only because the proxy for the database that comes as default is for mongodb, if you need sql, you can just make a proxy for sqlachemy (or wait until i find time to build it).


#from flask import Flaskapp = Flask(__name__)@app.route('/')def index():    return "Hello, World!"if __name__ == '__main__':    app.run(debug=True)