news 2026/4/23 14:06:12

Application/x-www-form-urlencoded 风格如何解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Application/x-www-form-urlencoded 风格如何解析

一句话:把「看上去像 query string」的报文,用标准库 net/url 或 ParseQuery 拆成 map[string]string,再按 key 取值即可。
下面给出 Go 代码模板,可直接嵌到你的 notifyHandler 里。
import (
"io"
"net/http"
"net/url"
"strings"
)

func notifyHandler(w http.ResponseWriter, r *http.Request) {
// 1. 读取原始 body(后面还要验签,必须拿原始字节)
bodyBytes, _ := io.ReadAll(r.Body)
raw := string(bodyBytes)

// 2. 解析成 map
vals, err := url.ParseQuery(raw)
if err != nil {
http.Error(w, "parse error", http.StatusBadRequest)
return
}
// 如果想转 map[string]string
params := make(map[string]string)
for k, v := vals {
if len(v) > 0 {
params[k] = v[0]
}
}

// 3. 取字段
transStat := params["trans_stat"]
reqSeqID := params["req_seq_id"]
transAmt := params["trans_amt"]
sign := params["sign"]

// 4. 验签(略,用 SDK 或自己 rsa.VerifyPKCS1v15)
// ok := utils.VerifySign(raw, sign, huifuPubKey)

// 5. 业务幂等处理
// ...

// 6. 返回 success
w.Write([]byte("success"))
}

要点
1. 一定要先读原始 body 再 ParseQuery,否则验签会失败。
2. url.ParseQuery 会把 + 当成空格,符合标准;如果前端误把空格 encode 成 %20 也能正常解析。
3. 参数名大小写敏感,汇付返回全小写。
4. 如果只想快速拿单个值,也可以 r.ParseForm() 然后 r.FormValue("trans_stat"),但同样会消耗 body,验签前千万别用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 12:16:45

5分钟极速瘦身Windows 11:免费开源工具让旧电脑重获新生

5分钟极速瘦身Windows 11:免费开源工具让旧电脑重获新生 【免费下载链接】Win11Debloat 一个简单的PowerShell脚本,用于从Windows中移除预装的无用软件,禁用遥测,从Windows搜索中移除Bing,以及执行各种其他更改以简化和…

作者头像 李华
网站建设 2026/4/23 12:53:39

考古发掘日志管理:现场记录即时转化为结构化档案

考古发掘日志管理:现场记录即时转化为结构化档案 在野外考古工地的临时帐篷里,研究员翻找三天前的手写日志——“那天T0304探方第五层是不是出了件石斧?”没人记得清。纸质笔记散落在不同队员手中,语音录音堆满手机存储&#xff0…

作者头像 李华
网站建设 2026/4/22 16:06:37

Inter字体商业应用终极指南:从许可证解析到实战部署

Inter字体商业应用终极指南:从许可证解析到实战部署 【免费下载链接】inter The Inter font family 项目地址: https://gitcode.com/gh_mirrors/in/inter 在数字产品设计中,字体选择往往决定着用户体验的成败。Inter字体凭借其开源特性和专业设计…

作者头像 李华
网站建设 2026/4/23 7:07:15

掌握Maccy剪贴板管理:让复制粘贴变得高效智能

掌握Maccy剪贴板管理:让复制粘贴变得高效智能 【免费下载链接】Maccy Lightweight clipboard manager for macOS 项目地址: https://gitcode.com/gh_mirrors/ma/Maccy 还在为频繁切换应用复制内容而烦恼吗?Maccy这款轻量级macOS剪贴板管理器正是你…

作者头像 李华
网站建设 2026/4/23 7:07:15

Windows预览体验计划轻松退出指南:告别Bug困扰

Windows预览体验计划轻松退出指南:告别Bug困扰 【免费下载链接】offlineinsiderenroll 项目地址: https://gitcode.com/gh_mirrors/of/offlineinsiderenroll 还在为Windows预览版的各种小毛病烦恼不已吗?系统频繁崩溃、应用兼容性问题、性能表现…

作者头像 李华
网站建设 2026/4/23 7:06:08

Zotero-SciHub插件完整使用教程:轻松获取学术文献PDF

Zotero-SciHub插件完整使用教程:轻松获取学术文献PDF 【免费下载链接】zotero-scihub A plugin that will automatically download PDFs of zotero items from sci-hub 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-scihub 还在为找不到学术论文的完…

作者头像 李华