Issue
The Flask tutorial site here says that to create a RESTful API, you would write classes that extend restful.Resource
, then add them to the API by:
app = Flask(__name__)
api = restful.Api(app)
class HelloWorld(restful.Resource):
def get(self):
return {'hello': 'world'}
api.add_resource(HelloWorld, '/')
However, I've looked at quite a few tutorials that all just use functions with the @app.route('/path')
decorator that I'm more used to seeing in Flask apps. For example, here, they have:
@app.route('/todo/api/v1.0/tasks', methods=['GET'])
def get_tasks():
return jsonify({'tasks': tasks})
And here:
@app.route('/')
def api_root():
return 'Welcome'
What's the difference between using the restful.Resource
class and just the decorated functions if any? If there are no differences, what should I be doing by convention to create a RESTful API?
Solution
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.
Answered By - chfw
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.