推荐答案
在 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
: 服务器内部错误。
-- -------------------- ---- ------- ---- ----- ------ ------ -------- --- - --------------- --------------- --- -------- -------- - ---------------- -------- ----------- -------------------- - --- - ------ --- ------ --------
2. headers
属性
headers
属性是一个字典,用于设置或获取 HTTP 响应的头信息。可以通过直接修改字典来添加或删除头信息。
@app.route('/headers') def headers(): response = Response("Hello, World!") response.headers['X-Custom-Header'] = 'CustomValue' return response
3. mimetype
和 content_type
属性
mimetype
和 content_type
属性用于设置或获取响应的 MIME 类型和内容类型。mimetype
是 content_type
的简化形式。
@app.route('/json') def json_response(): response = Response('{"key": "value"}', mimetype='application/json') return response
4. data
属性
data
属性用于设置或获取响应的主体内容。通常是一个字节字符串,但也可以通过 set_data
方法设置。
@app.route('/data') def data_response(): response = Response() response.set_data("This is the response data") return response
5. set_cookie
和 delete_cookie
方法
set_cookie
方法用于设置一个 cookie,而 delete_cookie
方法用于删除一个 cookie。
-- -------------------- ---- ------- ------------------------- --- ------------- -------- - ---------------- ----- ------------------------------- ----------- ------ -------- ---------------------------- --- ---------------- -------- - ---------------- --------- ---------------------------------- ------ --------
6. 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 data
7. 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 响应。