一、在html模板中直接输出html代码

gin文档挺坑爹的一点是居然没有使用html模板时在go代码中直接插入html代码的说明,搞得不熟悉go Template的话还得查找半天解决方案。

解决方案:

使用template.HTML

例子:
index.tmpl文件:

{{.data1}} 
{{.data2}}

go代码:

c.HTML(http.StatusOK, "index.tmpl", gin.H{
        "data1": "<p> test </p>"
        "data2":  template.HTML("<p> test </p>"),
    })

返回的html为:

<p> test </p>
test

二、遍历PostForm的所有param

没找到遍历post提交的form里所有param的API,所以参照源码写了这个方法 :

func updatePostPage(c *gin.Context) {
    req := c.Request
    req.ParseForm()
    req.ParseMultipartForm(32 << 20)//参数相当于32M,官方源码中本来定义了个变量,但是是private类型不能直接调用,所以干脆直接写个值。
    h := gin.H{}
    for k, v := range req.PostForm {
        if len(v) > 0 {
            println(k, v[0])
            h[k] = v[0]
        }
    }
    c.JSON(http.StatusOK, h)
}

三、输出漂亮json

c.IndentedJSONc.JSON
ret, err := json.MarshalIndent(h, "", "\t")
json.Marshal