【发布时间】:2014-01-14 22:06:16
【问题描述】:
我目前使用flask、sqlalchemy 和jinja2 构建了一个Web 应用程序。
为了获得正确的网络界面,我构建了如下视图:
@app.route('/mydata/', methods=['GET'])
@login_required
def mydata_list():
# build data here...
return render_template('mydata/index.html', data=data))
现在,如果我需要构建一个 REST API,我应该终止
return jsonify(data)
那么,如何处理以避免代码重复呢?在我的网址中添加?api=True,在我的视图中对其进行测试,然后返回适当的答案是一种好习惯吗?
【问题讨论】:
-
您是否考虑过使用 API 来获取 Web 界面的内容?
-
让我们将 HTML 端称为“网站”,将 JSON 端称为“API”(就我而言,仅返回 JSON 并不使其成为“REST API”)。没有“正确”的方式来区分这两者。有人会说,因为它们解决的是不同的问题,它们不会像你想象的那样相互交织(
data变量对于 HTML 和 JSON 可能不同)。您可以使用内容协商,或 URL 中的参数,或完全不同的 URL。没有“正确的方法”来区分这些问题。