解析请求和处理响应
处理响应
响应纯文本
# 处理响应
from flask import Flask, make_response
app = Flask(__name__)
@app.get("/text")
def r1():
resp = make_response("hello world")
resp.headers["Content-Type"] = "text/plain" # 指定内容类型为纯文本
return resp
if __name__ == '__main__':
app.run(host="127.0.0.1",port=5000)
HTML转义
当返回html响应时(flask的默认响应类型),任何模板参数应该进行显式转义,以防止注入攻击。
from markupsafe import escape
@app.route("/<name>")
def hello(name):
return f"Hello, {escape(name)}"
响应JSON结构体
# 处理响应
from flask import Flask, jsonify
app = Flask(__name__)
@app.get("/json")
def r2():
data = {
"name": "zhangsan",
}
return jsonify(data), 201 # 返回参数中第二个为状态码, 默认为200
if __name__ == '__main__':
app.run(host="127.0.0.1",port=5000)
响应文件
# 处理响应
from flask import Flask, send_from_directory
app = Flask(__name__)
@app.get("/file")
def r3():
filepath = "demo4.py"
# as_attachment=True 表示让浏览器直接下载文件,而不是打开
return send_from_directory(".", path=filepath, as_attachment=True)
if __name__ == '__main__':
app.run(host="127.0.0.1",port=5000)