我正在通过为 Web 服务器构建一个简单的 API 接口来学习 Go。当命中默认路由时,我想以 JSON 返回一条简单的消息。到目前为止,在线阅读,这是返回文本 JSON 字符串、对其进行编码并将其发送给用户的最简单方法。func GetDefault(c *gin.Context) { jsonData := []byte(`{"msg":"this worked"}`) var v interface{} json.Unmarshal(jsonData, &v) data := v.(map[string]interface{}) c.JSON(http.StatusOK,data)}这是最有效/最快的方法吗?在node.js和express中,我会做类似的事情:return res.status(200).json({"msg":"this worked"});在 Go + Gin 中执行此操作的最佳方法是什么?
2 回答
![?](http://img1.sycdn.imooc.com/54584ef20001deba02200220-100-100.jpg)
鸿蒙传说
TA贡献1865条经验 获得超7个赞
一种选择是使用Context.Data()
您提供要发送的数据(以及内容类型)的位置:
func GetDefault(c *gin.Context) {
jsonData := []byte(`{"msg":"this worked"}`)
c.Data(http.StatusOK, "application/json", jsonData)
}
您还可以使用内容类型常量:
func GetDefault(c *gin.Context) {
jsonData := []byte(`{"msg":"this worked"}`)
c.Data(http.StatusOK, gin.MIMEJSON, jsonData)
}
如果您的数据可用作string
值并且很大,则可以避免将其转换为:[]byte
Context.DataFromReader()
func GetDefault(c *gin.Context) {
jsonStr := `{"msg":"this worked"}`
c.DataFromReader(http.StatusOK,
int64(len(jsonStr)), gin.MIMEJSON, strings.NewReader(jsonStr), nil)
}
如果您的 JSON 为io.Reader
,例如 ,则此解决方案也适用os.File
。
- 2 回答
- 0 关注
- 195 浏览
添加回答
举报
0/150
提交
取消