Curl 如何接受Go的POST请求并将输出写入文件?
首先,我尝试在Go中创建一个日志服务,它是一个轻量级服务器,使用来自我的服务的日志数据接受POST请求。我在Go中编写这个服务是因为它应该很快,可以同时处理大量的POST请求。我的逻辑正确吗 无论如何,这是我的问题。我正在发送如下POST请求以测试:Curl 如何接受Go的POST请求并将输出写入文件?,curl,logging,go,Curl,Logging,Go,首先,我尝试在Go中创建一个日志服务,它是一个轻量级服务器,使用来自我的服务的日志数据接受POST请求。我在Go中编写这个服务是因为它应该很快,可以同时处理大量的POST请求。我的逻辑正确吗 无论如何,这是我的问题。我正在发送如下POST请求以测试: curl-H“Content-Type:application/json”-X POST-d'{“hello”:“world”}http://localhost:8080/log 到目前为止,这是我的围棋脚本: package main imp
curl-H“Content-Type:application/json”-X POST-d'{“hello”:“world”}http://localhost:8080/log
到目前为止,这是我的围棋脚本:
package main
import (
"fmt"
"log"
"net/http"
)
func logger(w http.ResponseWriter, r *http.Request) {
r.ParseForm()
fmt.Println(r.Form)
fmt.Println(r.FormValue("hello"))
}
func main() {
http.HandleFunc("/log", logger)
log.Fatal(http.ListenAndServe(":8080", nil))
}
它正在输出:
map[]
为什么呢?如何将POST数据写入服务器上的文件
多谢各位!
您没有发布表单,而是在请求正文中发送json数据 直接读取数据:
body, err := ioutil.ReadAll(r.Body)
if err != nil {
log.Println("ERROR:", err)
}
r.Method
包含所接收请求的类型(GET、POST、HEAD、PUT等)
您可以使用ioutil
从r.Body
读取数据,并使用相同的包将数据写入文件
这仅用于处理POST方法,读取数据并写入文件(output.txt)
ioutil.WriteFile
可能不是最好的解决方案,因为它会在写入文件之前截断文件。
if r.Method == "POST" {
body, err := ioutil.ReadAll(r.Body)
if err != nil {
fmt.Errorf("Error during reading body: %v", err)
}
if err := ioutil.WriteFile("output.txt", body, 0644); err != nil {
fmt.Errorf("Error during writing data: %v", err)
}
}