[英]Creating a RESTful API using Flask?
此处的 Flask 教程站点说要创建 RESTful API,您将编写扩展restful.Resource
类,然后通过以下方式将它们添加到 API:
app = Flask(__name__)
api = restful.Api(app)
class HelloWorld(restful.Resource):
def get(self):
return {'hello': 'world'}
api.add_resource(HelloWorld, '/')
但是,我已经看过很多教程,它们都只是使用带有@app.route('/path')
装饰器的函数,我更习惯在 Flask 应用程序中看到它们。 例如, 在这里,他们有:
@app.route('/todo/api/v1.0/tasks', methods=['GET'])
def get_tasks():
return jsonify({'tasks': tasks})
在这里:
@app.route('/')
def api_root():
return 'Welcome'
使用restful.Resource
类和仅使用装饰函数(如果有的话)有什么区别? 如果没有差异,我应该按照惯例做什么来创建 RESTful API?
简短的回答:
restful.Resource 来自Flask-Restful扩展,它不是 Flask 本身。 Miguel 的教程使用Flask编写了一个宁静的界面。
长答案:
首先,除了 Flask 之外,还有许多Flask 扩展。 尽管它们一起工作,但它们是单独的包,并且是由各个作者编写的。 Flask-Restful是Flask的扩展。
Miguel 的教程解释了如何单独使用 Flask 制作一个宁静的 api。
Flask-Restful旨在让我们中的一些人免于重新发明轮子,承诺将自定义类(或自定义 Python 数据结构)转变为一个安静的 Web 服务。 Flask-RESTX是Flask-Restful 的一个分支,使用 swagger UI 自动生成 api 文档。
此外,Flask 还记录了MethodView的用法,以允许开发人员编写自己的Restful API。 同时, Flask-Restless承诺将 SqlAlchemy 类变成一个安静的 Web 服务。
更新(18/07/2016), flask-api将函数/视图变成了一个宁静的界面,由django restful framework的作者 Tom Christie 设计。
更新(17/03/2021), Flask-RESTPlus做了与上述库类似的事情,但它还可以帮助您构建 swagger API 文档,这是一个额外的好处。
通往罗马的道路很多。
当需要大量端点时,使用方法而不是类会很快变得混乱。 类/资源是分离和解耦逻辑的更好方法。 此外,您的代码变得更具可读性且更易于更改/修复
使用flask-restful 可能是最好的方法,尽管我将有一些工作要做,以便为您的api 创建蓝图、配置路由、处理请求参数以及每个普通api 需要的许多事情,这很烦人。
我在flask-restful 之上构建了这个轻量级框架,它可以让您轻松构建restful api,而无需担心所需的所有接线,只需专注于定义您的api 和编码业务逻辑。 你可以在这里查看: https : //github.com/sebastiandev/peach
它更面向 NOSQL 数据库,但这只是因为默认数据库的代理是用于 mongodb 的,如果您需要 sql,您可以为 sqlachemy 制作一个代理(或等到我找到时间来构建它)。
#from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return "Hello, World!"
if __name__ == '__main__':
app.run(debug=True)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.