我有一个使用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的第一门艺术时,我可以开始发送到客户端浏览器。
有可能吗?将某个阅读器界面返回给gin-gonic,它将从中读取直到打开?
更新。有功能DataFromReader。例如https://gin-gonic.com/api-example/serving-data-from-reader/。 但这需要设置Content-Length。对于我的数据,我没有这个价值。因此,不应设置此标头。
答案 0 :(得分:0)
我已经找到了这样做的方法。很简单,只需将您的回复写到c.Writer
func getData(c *gin.Context) {
c.Statue(200)
c.Header("Content-Type", "application/json; charset=utf-8")
GetData(c.Writer)
}
func GetData(res io.Writer) {
res.Write([]byte("["))
res.Write(moreBytes)
res.Write(moreBytes2)
... res.Write([] byte(“]”)) }
但是没有处理错误的好方法。这需要更棘手的设计