响应对象Response

Posted Aspirantlu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了响应对象Response相关的知识,希望对你有一定的参考价值。

问题:视图函数的 return 和 普通函数的 return 有什么区别。

视图函数会返回状态码(status)、content-type(放置在http请求的headers中)。content-type 还会告诉 http 请求的接收方如何解析返回的主体内容。Flask 中 content-type 默认是 text/html

视图函数返回的内容永远是 Response 对象。返回对象的写法有两种方式。

方式一:make_response

举例一:

from flask import Flask, make_response

app = Flask(__name__)
# 载入整个配置文件
app.config.from_object('config')  # from_object需要接收模块的路径


def hello():
    headers = 
        'content-type': 'text/plain'
    
    content = '<html></html>'
    response = make_response(content, 201)
    response.headers = headers
    return response


app.add_url_rule('/hello/', view_func=hello)
if __name__ == '__main__':
    # 生产环境 nginx + uwsgi服务器
    # 访问配置参数 因为app.config是dict的子类
    app.run(debug=app.config['DEBUG'], host='0.0.0.0', port=8800)

举例二:重定向

from flask import Flask, make_response

app = Flask(__name__)
# 载入整个配置文件
app.config.from_object('config')  # from_object需要接收模块的路径


def hello():
    headers = 
        'content-type': 'text/plain',
        'location': 'http://www.baidu.com'
    
    content = '<html></html>'
    response = make_response(content, 301)
    response.headers = headers
    return response


app.add_url_rule('/hello/', view_func=hello)
if __name__ == '__main__':
    # 生产环境 nginx + uwsgi服务器
    # 访问配置参数 因为app.config是dict的子类
    app.run(debug=app.config['DEBUG'], host='0.0.0.0', port=8800)

方式二:逗号分隔返回

from flask import Flask, make_response

app = Flask(__name__)
# 载入整个配置文件
app.config.from_object('config')  # from_object需要接收模块的路径


def hello():
    headers = 
        'content-type': 'text/plain',
        'location': 'http://www.baidu.com'
    
    return '<html></html>', 301, headers


app.add_url_rule('/hello/', view_func=hello)
if __name__ == '__main__':
    # 生产环境 nginx + uwsgi服务器
    # 访问配置参数 因为app.config是dict的子类
    app.run(debug=app.config['DEBUG'], host='0.0.0.0', port=8800)

以上是关于响应对象Response的主要内容,如果未能解决你的问题,请参考以下文章

响应对象Response

响应对象Response

九:flask-response响应

HttpResponse对象

如何为 webmock 存根正确复制 Octokit 请求响应的响应主体

axios拦截器