http - golang 接受 gzip 后的数据

标签 http go gzip mux

我正在尝试将一些在帖子中压缩的数据发送到 golang 服务器并在帖子中使用它。基本上,我做以下输入

curl -X POST -H "Content-Encoding: gzip" -d @helloworld.gz http://myapp/

在服务器端

func PostEndpoint(w http.ResponseWriter, req *http.Request) {
   gunzip, err := gzip.NewReader(req.Body)
   if err != nil {
      log.Println("error unzip: ",err)
   }
   body , _ := ioutil.ReadAll(gunzip)
}

我不断收到 EOF 错误。我尝试使用 ioutil.ReadAll(req.Body) 打印原始字节,但它并不是我从 curl 发送的完整数据。

mux 需要配置什么吗?现在我将其创建为

router := mux.NewRouter()
router.HandleFunc("/", GetEndpoint).Methods("GET")
router.HandleFunc("/", PostEndpoint).Methods("POST")
log.Fatal(http.ListenAndServe(":80", router))

最佳答案

必须在 curl 上使用 --binary-data 而不是 --data

关于http - golang 接受 gzip 后的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39797732/

相关文章:

java - 在 java 中添加自定义 HTTP header

go - Golang如何在静态服务中删除最后一个斜杠

go - 无法使用 Go Profile 分析代码

go - 如何在 golang 测试用例中传递基本的 auth 和 viper 配置值

java - 为什么GZIPInputStream需要很长时间?

java - 使用 Wildfly 对 http 响应进行 Gzip 编码

javascript - 如何在AJAX中获取复选框值

java - 如何从 Java 中的 HttpServletRequest 检索原始帖子数据

android - 预期对象,但在改造 1.9 中找到字符串

ios - Swift 2 中的内存字符串压缩