推荐答案
在 Flask 中,Response 对象是用于处理 HTTP 响应的核心对象。以下是 Response 对象的常用属性和方法:
常用属性
- status_code: 响应的 HTTP 状态码,例如
200表示成功,404表示未找到。 - headers: 响应的 HTTP 头信息,可以通过字典形式访问和修改。
- mimetype: 响应的 MIME 类型,例如
text/html或application/json。 - data: 响应的主体内容,通常是一个字节字符串。
- content_type: 响应的内容类型,通常与
mimetype相关联。
常用方法
- set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=False, httponly=False, samesite=None): 设置一个 cookie。
- delete_cookie(key, path='/', domain=None): 删除一个 cookie。
- set_data(data): 设置响应的主体内容。
- get_data(as_text=False): 获取响应的主体内容,
as_text参数决定是否以文本形式返回。 - make_conditional(request): 使响应有条件,通常用于处理
If-Modified-Since和If-None-Match头。
本题详细解读
1. status_code 属性
status_code 属性用于设置或获取 HTTP 响应的状态码。常见的状态码包括:
200 OK: 请求成功。404 Not Found: 请求的资源未找到。500 Internal Server Error: 服务器内部错误。
// www.javascriptcn.com code example
from flask import Flask, Response
app = Flask(__name__)
@app.route('/')
def index():
response = Response("Hello, World!", status=200)
response.status_code = 404 # 修改状态码为 404
return response2. headers 属性
headers 属性是一个字典,用于设置或获取 HTTP 响应的头信息。可以通过直接修改字典来添加或删除头信息。
@app.route('/headers')
def headers():
response = Response("Hello, World!")
response.headers['X-Custom-Header'] = 'CustomValue'
return response3. mimetype 和 content_type 属性
mimetype 和 content_type 属性用于设置或获取响应的 MIME 类型和内容类型。mimetype 是 content_type 的简化形式。
@app.route('/json')
def json_response():
response = Response('{"key": "value"}', mimetype='application/json')
return response4. data 属性
data 属性用于设置或获取响应的主体内容。通常是一个字节字符串,但也可以通过 set_data 方法设置。
@app.route('/data')
def data_response():
response = Response()
response.set_data("This is the response data")
return response5. set_cookie 和 delete_cookie 方法
set_cookie 方法用于设置一个 cookie,而 delete_cookie 方法用于删除一个 cookie。
// www.javascriptcn.com code example
@app.route('/set-cookie')
def set_cookie():
response = Response("Cookie set")
response.set_cookie('username', 'john_doe')
return response
@app.route('/delete-cookie')
def delete_cookie():
response = Response("Cookie deleted")
response.delete_cookie('username')
return response6. get_data 方法
get_data 方法用于获取响应的主体内容。as_text 参数决定是否以文本形式返回。
@app.route('/get-data')
def get_data():
response = Response("Hello, World!")
data = response.get_data(as_text=True)
return data7. make_conditional 方法
make_conditional 方法用于使响应有条件,通常用于处理 If-Modified-Since 和 If-None-Match 头。
@app.route('/conditional')
def conditional():
response = Response("Conditional Response")
response.make_conditional(request)
return response通过掌握这些属性和方法,你可以更灵活地处理 Flask 中的 HTTP 响应。