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

我想知道是否可以在 Gin 的上下文中添加一个“方法”来添加标头Content-Type: application/hal+json,而不是在所有 API 调用中都这样做SetHeader

是这样的:

ctx.HALJSON(http.StatusOK, hal)


一只甜甜圈
浏览 179回答 1
1回答

蓝山帝景

您可以使用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{})}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go