news 2026/4/30 17:11:30

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/28 2:26:19

培训机构课程答疑机器人:降低讲师重复劳动强度

培训机构课程答疑机器人:降低讲师重复劳动强度 在一家中型编程培训机构里,每周开班的 Python 课程总伴随着相似的一幕:助教邮箱被“怎么安装 pip?”、“return 和 print 到底有什么区别?”这类问题塞满;新学…

作者头像 李华
网站建设 2026/4/30 19:37:46

Flutter网站开发中的常见问题与解决方案

在Flutter网站开发过程中,开发者常常会遇到各种各样的技术问题。这些问题可能涉及到依赖库的配置、代码的实现细节或者环境的设置。本文将结合一个实际的实例,探讨如何解决在使用youtube_player_iframe播放视频时遇到的错误。 问题描述 假设我们正在开发一个个人网站,需要…

作者头像 李华
网站建设 2026/4/18 13:00:07

Mac清理工具终极指南:三步彻底释放你的存储空间

你是否曾经疑惑,为什么删除了那么多应用,Mac的存储空间依然紧张?那些隐藏在系统深处的缓存文件、偏好设置和日志记录,就像房间角落的灰尘,看不见却占地方。今天,我将带你用最简单直接的方法,彻底…

作者头像 李华
网站建设 2026/4/24 15:40:22

如何快速解决文件乱码问题:EncodingChecker终极使用指南

在日常工作中,你是否遇到过打开文件时出现乱码的困扰?或者需要在项目中确保所有文件使用统一的编码格式?EncodingChecker正是为解决这些问题而生的专业工具。这款基于C#开发的图形界面应用,能够帮助你轻松验证一个或多个文件的文本…

作者头像 李华
网站建设 2026/5/1 5:05:10

INT4压缩可行吗?测试Qwen-Int4在Anything-LLM的表现

INT4压缩可行吗?测试Qwen-Int4在Anything-LLM的表现 在一台RTX 3060笔记本上跑动一个70亿参数的大模型,听起来像天方夜谭?但如今这已成现实——只要用对技术。 随着大语言模型规模不断膨胀,FP16精度下的Qwen-7B需要超过14GB显存…

作者头像 李华
网站建设 2026/4/22 14:33:48

MPV_lazy:Windows视频播放的终极完整配置指南

MPV_lazy:Windows视频播放的终极完整配置指南 【免费下载链接】MPV_lazy 🔄 mpv player 播放器折腾记录 windows conf ; 中文注释配置 快速帮助入门 ; mpv-lazy 懒人包 win10 x64 config 项目地址: https://gitcode.com/gh_mirr…

作者头像 李华