当前位置: 首页 > news >正文

响应(Response)

在 Flask 中,视图函数可以返回多种类型的响应,例如字符串、HTML、JSON、文件等。Flask 提供了 make_response 函数,用于生成和自定义 HTTP 响应。

2.1 默认响应

默认情况下,视图函数返回的字符串会被 Flask 包装成一个 HTTP 响应,状态码为 200 OK,内容类型为 text/html

@app.route('/')
def home():
    return "Hello, World!"  # 默认状态码为 200,内容类型为 text/html

2.2 使用 make_response 自定义响应

make_response 函数允许你自定义响应的状态码、头部、内容类型等。

2.2.1 基本用法
from flask import Flask, make_response

app = Flask(__name__)

@app.route('/custom')
def custom_response():
    response = make_response("This is a custom response", 201)  # 状态码为 201
    response.headers['Content-Type'] = 'text/plain'
    return response
  • make_response 的第一个参数是响应内容,第二个参数是状态码。

  • 可以通过 response.headers 设置响应头部。

2.2.2 设置 Cookies
@app.route('/set-cookie')
def set_cookie():
    response = make_response("Cookie set!")
    response.set_cookie('username', 'john')
    return response
  • set_cookie 方法用于设置 Cookie。

2.2.3 返回 JSON 数据

python

复制

from flask import jsonify

@app.route('/json')
def json_response():
    data = {'name': 'John', 'age': 30}
    return jsonify(data)  # 返回 JSON 格式的响应
  • jsonify 函数会将 Python 字典转换为 JSON 格式的响应。

2.2.4 返回文件
from flask import send_file

@app.route('/download')
def download_file():
    return send_file('path/to/file.txt', as_attachment=True)
  • send_file 函数用于发送文件,as_attachment=True 表示文件作为附件下载。


3. 请求和响应的完整示例

以下是一个完整的示例,展示如何处理请求和生成响应:

python

复制

from flask import Flask, request, make_response, jsonify

app = Flask(__name__)

@app.route('/greet', methods=['GET', 'POST'])
def greet():
    if request.method == 'GET':
        name = request.args.get('name', 'Guest')
    elif request.method == 'POST':
        name = request.form.get('name', 'Guest')

    response = make_response(f"Hello, {name}!", 200)
    response.set_cookie('username', name)
    return response

@app.route('/api/data')
def api_data():
    data = {'status': 'success', 'message': 'Hello, World!'}
    return jsonify(data)

if __name__ == '__main__':
    app.run(debug=True)
  • 访问 /greet?name=John 会返回 "Hello, John!",并设置一个名为 username 的 Cookie。

  • 访问 /api/data 会返回 JSON 格式的响应。

相关文章:

  • pgsql创建新用户并赋只读权限
  • 拥有一台云服务器能做什么呢?
  • fprintf() 函数:C语言中的文件格式化输出利器
  • 使用 Arduino 和 ThingSpeak 通过互联网进行实时温度和湿度监测
  • Android Studio执行Run操作报Couldn‘t terminate previous instance of app错误
  • Java 大视界 -- Java 大数据在智能教育虚拟实验室建设与实验数据分析中的应用(132)
  • leetcode0027 移除元素 - easy
  • 结构体的简单介绍(C语言)
  • 超精密工件小孔几何尺寸测量:自动化解决方案
  • 使用 Python 爬取微店关键词搜索接口(micro.item_search)的完整指南
  • 农业建设项目管理系统评测:8款推荐工具优缺点分析
  • iWebOffice2015 中间件如何在Chrome107及之后的高版本中加载
  • 车载以太网测试-11【网络层-ICMP协议】
  • Java中char取值范围
  • [c语言日寄]字符串进阶:KMP算法
  • ZVA-Z90,罗德与施瓦茨毫米波变换器
  • Pycharm 社区版安装教程
  • 详解数据库范式
  • 【RTSP】客户端(三) 音频相关
  • Markdown Poster – 免费Markdown转图片工具|优雅图文海报制作与社交媒体分享
  • 鸿蒙电脑正式发布,余承东:国产软件起步晚,基础弱,探索面向未来的电脑体验
  • 首届巴塞尔艺术奖公布:大卫·哈蒙斯、曹斐等36人获奖
  • 前4个月全国新建商品房销售面积降幅收窄,房地产库存和新开工有所改善
  • 体坛联播|雷霆抢七淘汰掘金,国米错失意甲登顶良机
  • 体育文化赋能国际交流,上海黄浦举办国际友人城市定向赛
  • 秦洪看盘|风格有所转变,热钱回流高弹性品种