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?
答案 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