c.PostValue 用于解析 application/x-www-form-urlencoded 或 multipart/form-data 请求体中的表单字段,自动完成解析无需手动 ParseForm;支持默认值、类型转换;POST/PUT/PATCH 行为一致;需区分 URLParam(查询参数)与 PostValue(请求体),且 JSON 请求需用 ReadJSON。

用 c.PostValue 获取表单字段最直接
前端以 application/x-www-form-urlencoded(即普通表单提交)或 multipart/form-data(含文件)方式 POST 数据时,Iris 用 c.PostValue 提取字段值。它内部自动解析 Request.Body,无需手动调用 c.Request().ParseForm()。
常见错误现象:直接读 c.Request().FormValue 或漏掉 ParseForm 调用,导致返回空字符串。
-
c.PostValue("username")返回string,未传时为空字符串 -
c.PostValueDefault("age", "18")提供默认值,比手动判空更简洁 -
c.PostValueInt("id")和c.PostValueIntDefault("page", 1)自动转整型,失败时返回零值或默认值,不 panic
POST 和 PUT 共享同一套表单解析逻辑
Iris 不区分 HTTP 方法来决定是否解析表单体 —— 只要 Content-Type 是 application/x-www-form-urlencoded 或 multipart/form-data,c.PostValue* 系列方法在 POST、PUT、PATCH 中行为完全一致。
容易踩的坑:误以为 PUT 需要用 c.URLParam 或 c.FormValue,结果拿不到数据。
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
- 前端发
PUT /user/123并带 bodyname=alice&email=a@b.c,后端仍用c.PostValue("name") - 路径参数(如
/user/{id})和表单参数必须分开处理:c.Params().Get("id")拿路径段,c.PostValue("name")拿 body 字段 - 若同时有同名字段(比如路径里叫
id,表单里也叫id),二者互不影响,不会覆盖
处理 multipart/form-data 文件上传要额外注意边界
当表单含 <input type="file">,Content-Type 变为 multipart/form-data,此时 c.PostValue 仍可用,但文件本身需用 c.FormFile 单独获取。
性能影响:Iris 默认将整个 multipart body 读入内存,大文件上传可能触发 OOM;生产环境建议限制 MaxRequestBodySize。
- 先调
file, err := c.FormFile("avatar"),再err = c.SaveFormFile(file, "./uploads/"+file.Filename) - 不要在调用
c.FormFile前多次调用c.PostValue—— multipart body 只能被读一次,重复调用会返回空或 error - 若只需文本字段,可跳过
FormFile,仅用PostValue;Iris 会跳过文件部分,只解析文本字段
别把 URLParam 和 PostValue 混用
c.URLParam("q") 是从 URL 查询字符串(?q=abc)取值,和表单提交无关;而 c.PostValue("q") 是从请求体取值。两者来源不同、解析时机不同、缓存机制也不同。
容易被忽略的地方:前端用 axios.post(url, { q: 'abc' }) 默认发 JSON,此时 c.PostValue 拿不到 —— 因为 Content-Type 是 application/json,不是表单格式。
- 发 JSON 时,应改用
c.ReadJSON(&req)解析结构体 - 想让
PostValue生效,前端必须显式设置Content-Type: application/x-www-form-urlencoded并用URLSearchParams构造 body -
c.URLParam在GET/DELETE中常用,但在POST中混用查询参数和表单体,易造成语义混乱


















