Я получаю сообщение об ошибке при декодировании тела запроса HTTP GET в Beego: тело приходит пустым
Я тестирую REST Api с использованием Beego, и для конкретной конечной точки мне нужно отправить запрос GET с телом JSON, единственным полем которого является токен, который позволяет получать некоторые данные. Моя проблема в том, что тело запроса приходит к контроллеру пустым, и я не уверен, почему.
Вот что я пробовал:
- Я убедился, что в конфигурации проекта copyrequestbody задано значение true.
- Я отправил запрос с помощью curl, чтобы проверить, есть ли проблема с моим тестовым кодом, и такая же проблема существует.
- В соответствии с ответом на этот вопрос, если я установил заголовок Content-Length, он должен работать, но я справился, и проблема остается (я также добавил заголовок Content-Type, но все же не повезло).
Мой код
// --- Struct used in the JSON encoding and decoding
type BodyGetAllClientes struct {
Token string
}
// --- Test code for the endpoint
// Code used to create the HTTP request
cliente := &http.Client{}
cuerpoToken := new(bytes.Buffer)
// casoDePrueba.cuerpoSolicitud has type BodyGetAllClientes
json.NewEncoder(cuerpoToken).Encode(casoDePrueba.cuerpoSolicitud)
solicitudCreada, errorCreacionSolicitud := http.NewRequest("GET", "http://localhost:8080/v1/CLIENTES"+casoDePrueba.querySolicitud, cuerpoToken)
// Ignoring lines for error handling of http.NewRequest (it's not reporting anything wrong)
// Setting some HTTP headers
solicitudCreada.Header.Set("Content-Type", "application/json")
solicitudCreada.Header.Set("Content-Length", strconv.Itoa(cuerpoToken.Len()))
// Code used to send the HTTP request
respuestaObtenida, errorEnvioSolicitud := cliente.Do(solicitudCreada)
// The error handling of cliente.Do isn't reporting a problem either
// --- Decoding JSON in the controller for the endpoint
var v BodyGetAllClientes
errorConversionJSON := json.Unmarshal(c.Ctx.Input.RequestBody, &v)
Ожидаемые результаты:
- c.Ctx.Input.RequestBody должен иметь ненулевую длину.
- errorConversionJSON должен быть равен нулю.
Фактические результаты:
- c.Ctx.Input.RequestBody имеет нулевую длину.
- errorConversionJSON не равен nil и при печати ошибки говорит: "неожиданный конец ввода JSON".