使用Flask创建RESTful API?

时间:2015-01-19 19:38:36

标签: python api rest flask

Flask教程网站here表示要创建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, '/')

但是,我已经查看了很多教程,这些教程都只使用我在Flask应用中常见的@app.route('/path')装饰器的功能。例如,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类和装饰函数之间的区别是什么?如果没有差异,我应该按惯例做什么来创建RESTful API?

4 个答案:

答案 0 :(得分:37)

简短回答

restful.Resource来自Flask-Restful扩展,而不是Flask本身。 Miguel's tutorial使用Flask编写一个restful接口。

答案很长

首先,与Flask一起,有许多Flask extensions。虽然它们一起工作,但它们是独立的包,由个别作者编写。 Flask-Restful Flask 的扩展。

Miguel的教程解释了如何使用Flask自己制作一个安静的api。

Flask-Restful旨在使我们中的一些人不再重新发明轮子,承诺将自定义类(或自定义Python数据结构)转换为宁静的Web服务。 Flask-RESTplus Flask-Restful 的分支,使用swagger UI自动生成api文档。

此外,Flask还documented使用 MethodView 来允许开发人员编写自己的restful API。同时,Flask-Restless承诺将SqlAlchemy类转换为一个宁静的Web服务。

更新(2016年7月18日),flask-api将函数/视图转换为一个安静的界面,由django restful framework的作者Tom Christie设计。

罗马有很多道路

答案 1 :(得分:0)

当需要大量端点时,使用方法而不是类很快就会变得混乱。类/资源是分离和解耦逻辑的更好方法。此外,您的代码变得更易读,更容易更改/修复

使用flask-restful可能是最好的方法,虽然我有一些工作要做,以便为你的api创建蓝图,配置路由,处理请求参数,以及每个正常的api需要的许多东西,非常烦人。

我已经在burn-restful上构建了这个轻量级框架,可以让您轻松构建restful apis而无需担心所需的所有布线,只需专注于定义api并编写业务逻辑。您可以在此处查看:https://github.com/sebastiandev/peach

它更面向NOSQL数据库,但这只是因为默认情况下数据库的代理是mongodb,如果你需要sql,你可以只为sqlachemy创建一个代理(或者等到我找到时间来构建它)。

答案 2 :(得分:0)

#from flask import Flask

app = Flask(__name__)

@app.route('/')

def index():

    return "Hello, World!"

if __name__ == '__main__':

    app.run(debug=True)

答案 3 :(得分:-1)

设置:

1:创建app.py文件。

2:pip3安装烧瓶。

代码:

import flask
app=flask.Flask(__name__)
app.config["DEBUG"]=True
@app.route('/',methods=['GET'])
def home():
    return "hello"
app.run()

运行:

python app.py