英文:
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
请尝试使用以下命令进行测试
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
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"
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论