beego フレームワークを使用して、REST API のエンドポイントをテストしようとしています。
私のテスト関数は、JSON リクエストを送信するために使用しているものの下にあります。
func testHTTPJsonResp(url string) string {
var jsonStr = []byte(`{"title":"Buy cheese and bread for breakfast."}`)
req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr))
req.Header.Set("X-Custom-Header", "myvalue")
req.Header.Set("Content-Type", "application/json")
beego.Error(err)
w := httptest.NewRecorder()
beego.BeeApp.Handlers.ServeHTTP(w, req)
beego.Debug(w)
return w.Body.String()
}
サーバーはリクエストを受け取りますが、入力本文は常にempty
リクエスト用です。
同様に、 Form データを server に送信するために使用している関数works fine
。
func testHTTPResp(httpProt, url string, params map[string]interface{}) string {
bodyBuf := &bytes.Buffer{}
bodyWriter := multipart.NewWriter(bodyBuf)
for key, val := range params {
beego.Error(key + val.(string))
_ = bodyWriter.WriteField(key, val.(string))
}
contentType := bodyWriter.FormDataContentType()
bodyWriter.Close()
r, _ := http.NewRequest(httpProt, url, bodyBuf)
r.Header.Add("Content-Type", contentType)
w := httptest.NewRecorder()
beego.BeeApp.Handlers.ServeHTTP(w, r)
beego.Debug(w)
return w.Body.String()
}
問題:同様のフォームでエンコードされたデータは正常に処理されるのに、サーバーが JSON 要求本文を空として受信するのはなぜですか。数日間これにこだわっていますが、どんな指針も高く評価されています。