使用 Flask API 代替 render_template

Ram*_*avi 0 python api rest jinja2 flask

去年我用 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)
Run Code Online (Sandbox Code Playgroud)

和:

user_name = request.form ['username']
Run Code Online (Sandbox Code Playgroud)

Chu*_*nze 5

我的产品负责人希望我使用“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)
Run Code Online (Sandbox Code Playgroud)

我应该删除任何 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 吗?当然,对于您的客户端。

https://www.restapitutorial.com