将数组发送到Golang服务器使用curl。

huangapple go评论75阅读模式
英文:

send array to golang server using curl

问题

我有一个简单的HTTP服务器正在运行。我正在尝试使用curl将一个值列表发送到该服务器。

curl -X POST -d "[\"student1\", \"student2\"]" http://localhost:8080/

我该如何将请求体读取为字符串切片?我尝试了b, _ := io.ReadAll(r.Body),但它将数组读取为一个项,而不是一个数组。

英文:

I have a simple HTTP server running. I am trying to send a list of values to this server using curl.

curl -X POST -d "["student1", "student2"]" http://localhost:8080/

How can I read the body as a string slice? I tried b, _ := io.ReadAll(r.Body) but it reads the array as one item rather than an array.

答案1

得分: 1

你可以使用json解码器来解码字符串切片中的值。

var arr []string
err := json.NewDecoder(req.Body).Decode(&arr)
if err != nil {
    fmt.Fprintf(w, fmt.Sprintf("Error:%+v", err))
    return
}
fmt.Println(arr)

这段代码将请求体中的数据解码为字符串切片,并将结果存储在arr变量中。如果解码过程中出现错误,将会打印错误信息。最后,代码会打印出arr的内容。

英文:

You can use json decoder to decode the values in slice of string

var arr []string
err := json.NewDecoder(req.Body).Decode(&arr)
if err != nil {
	fmt.Fprintf(w,fmt.Sprintf("Error:%+v",err))
	return
}
fmt.Println(arr)

答案2

得分: 1

请尝试使用以下命令进行测试 将数组发送到Golang服务器使用curl。

curl -X POST -d '[\"student1\", \"student2\"]' http://localhost:8080

引号破坏了有效负载解析。

这个也可以工作:

curl -X POST -d "[\"student1\", \"student2\"]" http://localhost:8080

你的 Go 服务器可能会接收到这样的有效负载 [student1, student2],而不是 [\"student1\", \"student2\"]

在发送格式正确的 JSON 字符串数组之后,你可以像这样解析它:

var body []string
e := json.NewDecoder(r.Body).Decode(&body)
fmt.Println(e, body[0]) // nil "student1"
英文:

Try with this 将数组发送到Golang服务器使用curl。

curl -X POST -d '["student1", "student2"]' http://localhost:8080

The quotes were breaking the payload parsing.

This also works:

curl -X POST -d "[\"student1\", \"student2\"]" http://localhost:8080

Your go server is probably reciving a payload that looks like this [student1, student2] instead of looking like this ["student1", "student2"]

After you have your well formed json string array being sent, you can parse it like this:

var body []string
e := json.NewDecoder(r.Body).Decode(&body)
fmt.Println(e, body[0]) // nil "student1"

huangapple
  • 本文由 发表于 2022年5月6日 12:28:08
  • 转载请务必保留本文链接:https://go.coder-hub.com/72136168.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定