使用 Flask 创建 RESTful API?
Creating a RESTful API using Flask?
Flask 教程站点 here 说要创建 RESTful API,您可以编写 class 扩展 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 应用程序中看到它。例如,here,他们有:
@app.route('/todo/api/v1.0/tasks', methods=['GET'])
def get_tasks():
return jsonify({'tasks': tasks})
和here:
@app.route('/')
def api_root():
return 'Welcome'
使用 restful.Resource
class 和只使用装饰函数有什么区别?如果没有差异,我应该按照惯例做什么来创建 RESTful API?
简答:
restful.Resource是从一个Flask-Restful extension, which is not Flask itself. Miguel's tutorial uses Flask写一个restful接口。
长答案:
首先,除了Flask,还有一些Flask extensions。尽管它们协同工作,但它们是独立的包,并且由各个作者编写。 Flask-Restful 是 Flask.
的扩展
Miguel 的教程解释了如何单独使用 Flask 制作 restful api。
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,Flask-Restful 的一个分支,使用 swagger UI 自动生成 api 文档。
此外,Flask 还documented the usage of MethodView to allow developers to write their own restful APIs. In parallel, Flask-Restless 承诺将 SqlAlchemy class 转变为 restful 网络服务。
更新(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。
一个更新(17/03/2021),Flask-RESTPlus 做一些与上述库相似的事情,但它也可以帮助你构建 swagger API 文档,这是一个额外的好处。
通往罗马的道路很多。
当需要大量端点时,使用方法而不是 类 会很快变得混乱。 Classes/resource 是分离和解耦逻辑的更好方法。此外,您的代码变得更易读,更易于 change/fix
使用 flask-restful 可能是最好的方法,尽管我还有一些工作要做,以便为您的 api 创建蓝图、配置路由、处理请求参数,以及每个普通人 api 都需要的许多东西,这很烦人。
我在 flask-restful 之上构建了这个轻量级框架,让您可以轻松构建 restful apis 而无需担心所有需要的布线,只需专注于定义您的 api 和编写业务逻辑。你可以在这里查看:https://github.com/sebastiandev/peach
它更面向NOSQL数据库,但那只是因为默认提供的数据库代理是针对mongodb的,如果您需要sql,您可以为sql做一个代理sqlchemy(或者等我有时间来构建它)。
#from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return "Hello, World!"
if __name__ == '__main__':
app.run(debug=True)
Flask 教程站点 here 说要创建 RESTful API,您可以编写 class 扩展 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 应用程序中看到它。例如,here,他们有:
@app.route('/todo/api/v1.0/tasks', methods=['GET'])
def get_tasks():
return jsonify({'tasks': tasks})
和here:
@app.route('/')
def api_root():
return 'Welcome'
使用 restful.Resource
class 和只使用装饰函数有什么区别?如果没有差异,我应该按照惯例做什么来创建 RESTful API?
简答:
restful.Resource是从一个Flask-Restful extension, which is not Flask itself. Miguel's tutorial uses Flask写一个restful接口。
长答案:
首先,除了Flask,还有一些Flask extensions。尽管它们协同工作,但它们是独立的包,并且由各个作者编写。 Flask-Restful 是 Flask.
的扩展Miguel 的教程解释了如何单独使用 Flask 制作 restful api。
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,Flask-Restful 的一个分支,使用 swagger UI 自动生成 api 文档。
此外,Flask 还documented the usage of MethodView to allow developers to write their own restful APIs. In parallel, Flask-Restless 承诺将 SqlAlchemy class 转变为 restful 网络服务。
更新(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。
一个更新(17/03/2021),Flask-RESTPlus 做一些与上述库相似的事情,但它也可以帮助你构建 swagger API 文档,这是一个额外的好处。
通往罗马的道路很多。
当需要大量端点时,使用方法而不是 类 会很快变得混乱。 Classes/resource 是分离和解耦逻辑的更好方法。此外,您的代码变得更易读,更易于 change/fix
使用 flask-restful 可能是最好的方法,尽管我还有一些工作要做,以便为您的 api 创建蓝图、配置路由、处理请求参数,以及每个普通人 api 都需要的许多东西,这很烦人。
我在 flask-restful 之上构建了这个轻量级框架,让您可以轻松构建 restful apis 而无需担心所有需要的布线,只需专注于定义您的 api 和编写业务逻辑。你可以在这里查看:https://github.com/sebastiandev/peach
它更面向NOSQL数据库,但那只是因为默认提供的数据库代理是针对mongodb的,如果您需要sql,您可以为sql做一个代理sqlchemy(或者等我有时间来构建它)。
#from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return "Hello, World!"
if __name__ == '__main__':
app.run(debug=True)