У меня есть приложение, созданное с помощью gin-gonic и golang. Приложение возвращает JSON по запросу. Мой JSON - это массив некоторых структур. У меня есть структуры, созданные одна за другой, когда все будут готовы, я делаю вывод с помощью c.String
func getData(c *gin.Context) {
jsondoc, err := GetData()
if err != nil {
handleError(c, err)
return
}
c.Header("Content-Type", "application/json; charset=utf-8")
c.String(200, jsondoc)
}
Я хочу провести оптимизацию. Я хочу начать отправку данных пользователю, когда не готов полный JSON. Когда у меня есть первые изображения JSON, я могу начать отправку в клиентский браузер.
Является ли это возможным? Вернуть какой-нибудь читательский интерфейс в джин-гоник, и он будет читать с него до тех пор, пока не откроется?
Обновлять. Есть функция DataFromReader. Например, https://gin-gonic.com/api-example/serving-data-from-reader/. Но для этого требуется установить Content-Length. Для моих данных у меня нет этого значения. Итак, этот заголовок устанавливать не нужно.