golang gin 技巧

作者: 云上听风 | 来源:发表于2018-06-16 08:29 被阅读69次

    一、在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


    1. 使用c.IndentedJSON替代c.JSON
    2. 如果是使用golang自带的JSON库,使用:
    ret, err := json.MarshalIndent(h, "", "\t")
    

    替代json.Marshal可以得到漂亮json。

    相关文章

      网友评论

        本文标题:golang gin 技巧

        本文链接:https://www.haomeiwen.com/subject/qziveftx.html