TUTORIAL后端与 Web 服务FETCHED
Flask Request 请求对象 API
Flask Request 请求对象 API Request 类封装了客户端发来的 HTTP 请求的所有信息。 通过 from flask import request 导入代理对象,在视图函数中直接使用。 常用属性速查 属性 类型 说明 示例值 method str HTTP 请求方法 'GET'、'POST..
更新于 2026/7/16
教程详情页默认 noindex。
Flask Request 请求对象 API
Request 类封装了客户端发来的 HTTP 请求的所有信息。
通过 from flask import request 导入代理对象,在视图函数中直接使用。
常用属性速查
| 属性 | 类型 | 说明 | 示例值 |
|---|---|---|---|
| method | str | HTTP 请求方法 | "GET"、"POST" |
| path | str | URL 路径部分(不含域名和查询字符串) | "/search" |
| full_path | str | 路径 + 查询字符串 | "/search?q=runoob" |
| url | str | 完整请求 URL(不含查询字符串) | "http://localhost:5000/search" |
| base_url | str | 同 url,去掉最后的查询字符串 | "http://localhost:5000/search" |
| url_root | str | 域名 + 应用根路径 | "http://localhost:5000/" |
| host | str | Host 头,含端口 | "localhost:5000" |
| host_url | str | scheme + host + 应用根 | "http://localhost:5000/" |
| scheme | str | 协议 | "http"、"https" |
| remote_addr | str | 客户端 IP 地址 | "127.0.0.1" |
| endpoint | str | 匹配到的路由 endpoint | "index"、"blog.show" |
| url_rule | Rule | 匹配到的路由规则对象 | Werkzeug Rule 实例 |
| view_args | dict | URL 中的动态变量 | {"post_id": 42} |
| blueprint | str | 当前蓝图名称 | "auth"、"blog" |
| blueprints | list | 当前匹配的蓝图层级列表 | ["auth"] |
| is_json | bool | 请求 Content-Type 是否为 JSON | True / False |
获取请求数据
| 属性/方法 | 类型 | 说明 |
|---|---|---|
| args | MultiDict | URL 查询参数。访问 /search?q=flask → request.args.get("q") |
| form | MultiDict | POST 表单数据(application/x-www-form-urlencoded 或 multipart/form-data) |
| json | dict / None | JSON 请求体(已解析为 Python 对象)。不是 JSON 请求时返回 None |
| data | bytes | 原始请求体数据 |
| files | FileMultiDict | 上传的文件。request.files["file"] 返回 FileStorage 对象 |
| cookies | dict | 客户端发来的 Cookie |
| headers | Headers | 请求头。支持多种访问方式 |
| get_json(force=False, silent=False, cache=True) | — | 解析 JSON 请求体。force 强制解析非 JSON 类型,silent 出错时返回 None |
对 args、form 等 MultiDict 类型,始终使用 .get(key, default) 方法获取值。直接用 request.args["key"] 访问不存在的键会抛出 KeyError(返回 400 错误)。
内容协商属性
| 属性/方法 | 说明 |
|---|---|
| accept_mimetypes | 客户端接受的 MIME 类型列表(MIMEAccept 对象) |
| accept_charsets | 客户端接受的字符集 |
| accept_encodings | 客户端接受的编码方式 |
| accept_languages | 客户端接受的语言 |
| content_type | 请求的 Content-Type |
| content_length | 请求体长度(字节) |
| content_md5 | 请求体的 MD5 校验值 |
代码示例
实例
from flask import Flask, request
app = Flask(__name__)
@app.route("/demo", methods=["GET", "POST"])
def demo():
# 获取查询参数
keyword = request.args.get("q", "")
# 获取表单数据
username = request.form.get("username", "")
# 获取 JSON 数据
if request.is_json:
data = request.json
name = data.get("name", "unknown")
# 获取请求头
user_agent = request.headers.get("User-Agent", "")
accept_lang = request.accept_languages.best
# 获取 URL 信息
url_info = {
"method": request.method, # "GET" 或 "POST"
"path": request.path, # "/demo"
"url": request.url, # 完整 URL
"remote_addr": request.remote_addr, # 客户端 IP
}
return url_info
app = Flask(__name__)
@app.route("/demo", methods=["GET", "POST"])
def demo():
# 获取查询参数
keyword = request.args.get("q", "")
# 获取表单数据
username = request.form.get("username", "")
# 获取 JSON 数据
if request.is_json:
data = request.json
name = data.get("name", "unknown")
# 获取请求头
user_agent = request.headers.get("User-Agent", "")
accept_lang = request.accept_languages.best
# 获取 URL 信息
url_info = {
"method": request.method, # "GET" 或 "POST"
"path": request.path, # "/demo"
"url": request.url, # 完整 URL
"remote_addr": request.remote_addr, # 客户端 IP
}
return url_info