Я получаю сообщение об ошибке при декодировании тела запроса 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".

0 ответов

Другие вопросы по тегам