Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Curl 如何接受Go的POST请求并将输出写入文件?_Curl_Logging_Go - Fatal编程技术网

Curl 如何接受Go的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

首先,我尝试在Go中创建一个日志服务,它是一个轻量级服务器,使用来自我的服务的日志数据接受POST请求。我在Go中编写这个服务是因为它应该很快,可以同时处理大量的POST请求。我的逻辑正确吗

无论如何,这是我的问题。我正在发送如下POST请求以测试:

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)
    }
}