gpt4 book ai didi

http - 来自 golang 中的 http 请求的表单变量的嵌套值

转载 作者:IT王子 更新时间:2023-10-29 02:01:43 25 4
gpt4 key购买 nike

我有 PHP 背景,我正在努力学习 Go。

过去,我可以从 bash 运行这个命令:

curl -X POST http://192.168.12.107/restfulendpoint.php \
-H "Content-Type: application/x-www-form-urlencoded" \
-d \
"menu[0][name]=pizza&menu[0][price]=12.00&menu[1][name]=orange juice&menu[1][price]=1.00"

我的 restfulendpoint.php自然会收到一个POST像这样以嵌套格式构造的数组

Array
(
[menu] => Array
(
[0] => Array
(
[name] => pizza
[price] => 12.00
)

[1] => Array
(
[name] => orange juice
[price] => 1.00
)

)

)

然后我创建了一个 go 脚本,我希望它能产生类似的行为。我写了这个restfulendpoint.go

func Post(w http.ResponseWriter, r *http.Request) {
url := mux.Vars(r)
r.ParseForm()
qs := r.Form
log.Println(qs)
}

但是当我收到 POST 内容时,我得到的结构是这样的:

map[menu[0][price]:[12.00] menu[1][name]:[orange juice] menu[1][price]:[1.00] menu[0][name]:[pizza]]

Go 正在处理每个 map[<int>][price|name]作为 map 中的单独键。我真正想要的是这样的输出:

map[menu:[map[name:pizza price:12.00] map[name:pizza price:12.00]]]

在我的 curl 中是否有我应该遵循的约定?调用我restfulendpoint.go这样我就可以自然地接收模式中的数据,每个菜单项都有名称和价格属性吗?或者我应该在我的 go 脚本中做些什么来保留数据模式?

最佳答案

看起来 go 的 ParseForm 不适合您用于编码层次结构的格式。我认为您面临的是要么读取原始正文,然后自己解析它,要么,如果您可以选择更改帖子格式,只需将正文作为 JSON 而不是表单发送。

关于http - 来自 golang 中的 http 请求的表单变量的嵌套值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51352346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com