登录
首页 >  Golang >  Go问答

使用 Golang 的 w.Write 和 Render.JSON 在 Chi Router 中发送响应

来源:stackoverflow

时间:2024-02-07 16:36:22 432浏览 收藏

在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《使用 Golang 的 w.Write 和 Render.JSON 在 Chi Router 中发送响应》,聊聊,希望可以帮助到正在努力赚钱的你。

问题内容

文档似乎没有帮助,我找不到很多描述 go lang 与 render.jsonw.write([]byte) 之间差异的帖子。我们有一个简单的 chi 路由器,它发出 post 请求并返回数据。我认为唯一的区别是自动设置内容类型,但是当我使用 render.json 时,它会删除键。

任何人都可以用几句话告诉我使用渲染和写入是否有区别和好的用例?有人对此有任何个人经验或建议吗?我已阅读文档,并看到响应以多种不同的方式发送。

//Current Pref as I can define the headers, etc. 
    w.WriteHeader(resp.StatusCode)
    w.Header().Set("Content-Type", "application/json")
    json := []byte(body)
    w.Write(json)



//vs (sets content type, but removes the keys* and I am not sure why) 
render.JSON(w,r,interface)

正确答案


请参阅 code for render.JSON。该函数将参数编码为 JSON,设置 JSON 内容类型标头并将 JSON 写入响应。应用程序可以在调用 render.JSON 之前设置响应标头。应用程序可以在调用render.JSON之前调用render.Status来设置响应状态。

ResponseWriter.Write 方法按原样将字节写入响应。

请注意 render.JSON 和 ResponseWriter.Write 之间的一个关键区别:前一个函数将参数编码为 JSON,后者按原样写入字节。

render.JSON 函数封装了应用程序常用的功能。如果您觉得方便,请使用该功能。

到这里,我们也就讲完了《使用 Golang 的 w.Write 和 Render.JSON 在 Chi Router 中发送响应》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>