去年,我使用Flask开发了一个大型网站。
我使用render_template方法将数据从后端发送到前端,并使用request.form从前端将数据发送到后端
现在,我的产品所有者希望我使用“ API”代替上述解决方案。 而且我完全迷惑了如何使用API。
我应该删除任何render_template或request.form吗?
我应该完全更改后端并查看功能吗?
我能只更改render_template和request.form而不更改其余代码吗?
使用API后可以使用Jinja模板吗?还是我应该使用JavaScript?
我以前的解决方案是这样的:
apps = apps_model.query.all ()
render_template ('index.html' , apps=apps)
和:
user_name = request.form ['username']
答案 0 :(得分:1)
我的产品所有者希望我使用“ API”代替上述解决方案
据我了解,这意味着您的产品经理希望您将后端与前端分开。简而言之,您应该创建一个[RESTful] API。本质上,您不必使用render_template
来处理和解析HTML模板并将其显示给最终用户。
您的新API应该返回JSON对象,然后从客户端(即网站)调用该API,以从数据库中创建,更新,检索和删除数据,然后将信息返回给客户端。
from flask import Flask, jsonify
app = Flask(__name__)
app.route("/", methods=["GET"])
def index():
api_response = {
"status": "success",
"message": "Welcome to our API"
}
return jsonify(api_response)
我应该删除任何render_template或request.form吗?
您将不再需要render_template
,因为您将不会显示或返回HTML页面。但是,request.form
仍可用于从客户端收集数据。完全取决于您希望客户端与您的API通信的方式
我应该完全更改后端并查看功能吗?
仅更改/创建视图函数以返回特定数据。
示例:
获取所有用户:创建路线/api/users
获取用户A:创建路由/api/users/user_a
我能只更改render_template和request.form而不更改其余代码吗?
否。
使用API后可以使用Jinja模板吗?还是我应该使用JavaScript?
极不可能。您将不再渲染模板。我应该使用Javascript吗?当然,对于您的客户端。