Я пытаюсь протестировать конечную точку моего REST API, используя структуру beego.
Ниже приведена моя тестовая функция, которую я использую для отправки запроса 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
для запроса.
Аналогично функции, которую я использую для отправки данных формы на сервер 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 как пустое, в то время как данные с аналогичной закодированной формой проходят нормально. Застряли на этом уже несколько дней, любые указатели высоко ценятся.
copyrequestbody
установлен наtrue
Я вообще не вижу, чтобы запрос поступал на сервер, но почему-то ответ пуст - person poorva   schedule 29.04.2016ListenAndServe
. Единственный фактор, по которому я могу сказать, что сервер работает правильно, - это если я сделаю действительный запрос, я получу 200 OK, но для недопустимых запросов я получаю 404 На самом деле я опубликовал свою актуальную проблему здесь. - person poorva   schedule 02.05.2016