为了账号安全,请及时绑定邮箱和手机立即绑定

在 Gin 中使用自定义内容类型呈现 JSON

在 Gin 中使用自定义内容类型呈现 JSON

Go
一只甜甜圈 2023-01-03 16:18:21
我想知道是否可以在 Gin 的上下文中添加一个“方法”来添加标头Content-Type: application/hal+json,而不是在所有 API 调用中都这样做SetHeader。是这样的:ctx.HALJSON(http.StatusOK, hal)
查看完整描述

1 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

您可以使用c.Render自定义渲染器,实现render.Renderer.

如果实际呈现与 JSON(HAL 应该是)相同,您可以嵌入render.JSON到您的结构中,以便该方法Render(http.ResponseWriter) error免费提供,然后仅实现自定义内容类型:


type HALJSON struct {

    render.JSON

}


func (HALJSON) WriteContentType(w http.ResponseWriter) {

    header := w.Header()

    if val := header["Content-Type"]; len(val) == 0 {

        header["Content-Type"] = []string{"application/hal+json"}

    }

}

然后这样使用它:


func MyHandler(c *gin.Context) {

    // handler code...

    c.Render(http.StatusOK, HALJSON{})

}


查看完整回答
反对 回复 2023-01-03
  • 1 回答
  • 0 关注
  • 177 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信