Heroku h18 错误,而我的后端响应 200 到他们的路由器(多部分/表单数据)

在 Heroku 上部署我的 golang API 时出现错误。Heroku 检测到断开连接并报告 500 错误,而在日志中我的服务器正确回答 200。这是multipart/form-data一个附加文件的请求,我只是在响应正文中返回一个 JSON。


2019-03-01T07:35:29.060814+00:00 app[web.1]: xx.x.xx.x - - [01/Mar/2019:07:35:29 +0000] "POST /v1/fixture/extract/ HTTP/1.1" 200 2133

2019-03-01T07:35:29.413179+00:00 heroku[router]: sock=backend at=error code=H18 desc="Server Request Interrupted" method=POST path="/v1/fixture/extract/" host=xxx.com request_id=28cdf569-2e00-47b8-9989-9280865707c8 fwd="xx.x.xx.x" dyno=web.1 connect=1ms service=352ms status=503 bytes=2280 protocol=https

这是我在没有反向代理的情况下在本地访问服务时的卷曲:


*   Trying ::1...

* TCP_NODELAY set

* Connected to localhost (::1) port 8080 (#0)

> POST /v1/fixture/extract/ HTTP/1.1

> Host: localhost:8080

> User-Agent: curl/7.64.0

> accept: application/json

> Content-Length: 154090

> Content-Type: multipart/form-data; boundary=------------------------7a9bb5de3838f429

> Expect: 100-continue

< HTTP/1.1 200 OK

< Content-Type: application/json

< Date: Fri, 01 Mar 2019 07:44:50 GMT

< Connection: close

< Transfer-Encoding: chunked

我很难找到发生这种情况的原因。


我的去功能:


func FixtureExtract(w http.ResponseWriter, r *http.Request) {

    w.Header().Set("Content-Type", "application/json")


    json.NewEncoder(w).Encode(ExtractFixture{})

}


江户川乱折腾
浏览 74回答 1
1回答

函数式编程

错误的原因是我在返回答案之前没有使用multipart/form-data客户端发送的消息。这解决了问题:func&nbsp;FixtureExtract(w&nbsp;http.ResponseWriter,&nbsp;r&nbsp;*http.Request)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;w.Header().Set("Content-Type",&nbsp;"application/json") &nbsp;&nbsp;&nbsp;&nbsp;r.ParseMultipartForm(32&nbsp;<<&nbsp;20) &nbsp;&nbsp;&nbsp;&nbsp;json.NewEncoder(w).Encode(ExtractFixture{}) }我只需要用r.ParseMultipartForm(32 << 20).
打开App,查看更多内容
随时随地看视频慕课网APP