news 2026/6/9 2:30:20

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/6/2 23:10:15

终极桌面歌词工具完整使用指南:打造你的专属音乐伴侣 [特殊字符]

还在为听歌时频繁切换窗口查看歌词而烦恼吗?LyricsX这款基于Swift开发的macOS原生应用,将彻底改变你的音乐体验。它能够将歌词实时悬浮在桌面任意位置,让你在工作、学习或娱乐时无需中断当前任务,轻松享受沉浸式的音乐时光。 【免…

作者头像 李华
网站建设 2026/6/2 3:45:53

Zotero-SciHub学术文献自动化下载技术指南

Zotero-SciHub插件作为专为Zotero和Juris-M文献管理软件设计的智能工具,通过DOI信息自动从学术资源获取平台获取学术文献PDF文件,实现文献下载流程的全面自动化。本指南将从技术架构、功能模块、配置优化等多个维度系统解析该工具的使用方法。 【免费下载…

作者头像 李华
网站建设 2026/5/23 19:08:55

终极完整指南:快速掌握Venera跨平台漫画阅读器

终极完整指南:快速掌握Venera跨平台漫画阅读器 【免费下载链接】venera A comic app 项目地址: https://gitcode.com/gh_mirrors/ve/venera 你是否渴望拥有一款能同时在电脑和手机上完美运行的漫画阅读神器?今天,我们将一起探索Venera…

作者头像 李华
网站建设 2026/6/5 7:54:56

Project Eye:数字时代视力保护的终极解决方案

Project Eye:数字时代视力保护的终极解决方案 【免费下载链接】ProjectEye 😎 一个基于20-20-20规则的用眼休息提醒Windows软件 项目地址: https://gitcode.com/gh_mirrors/pr/ProjectEye 在现代职场中,长时间面对屏幕已成为常态。据统…

作者头像 李华
网站建设 2026/6/5 9:17:33

PyART实战手册:3天速成气象雷达数据分析专家

PyART实战手册:3天速成气象雷达数据分析专家 【免费下载链接】pyart The Python-ARM Radar Toolkit. A data model driven interactive toolkit for working with weather radar data. 项目地址: https://gitcode.com/gh_mirrors/py/pyart 气象雷达数据处理…

作者头像 李华
网站建设 2026/6/2 14:17:33

Open-AutoGLM开源了!手把手教你部署AutoGLM本地推理环境,30分钟内搞定

第一章:Open-AutoGLM开源项目概览Open-AutoGLM 是一个面向通用语言模型自动化推理与生成优化的开源框架,旨在降低大模型在实际应用中的部署门槛。该项目由社区驱动开发,支持多种主流语言模型的无缝接入,并提供模块化的配置体系&am…

作者头像 李华