繁体   English   中英

使用 Flask 创建 RESTful API?

[英]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-RestfulFlask的扩展。

Miguel 的教程解释了如何单独使用 Flask 制作一个宁静的 api。

Flask-Restful旨在让我们中的一些人免于重新发明轮子,承诺将自定义类(或自定义 Python 数据结构)转变为一个安静的 Web 服务。 Flask-RESTXFlask-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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM