[zeromicro/go-zero]当我自己动手制作 handle.tpl 时,它不能正常工作。

2024-08-24 207 views
3

我按照这个文档:https://go-zero.dev/cn/docs/advance/template来 DIY 我的 api 输出,但它完全将 handle.tpl 复制到 internal/handler/xxxhandler.go

我认为文档可能有一些错误。当我调整一些代码时,它运行良好:

package {{.PkgName}}                                                                                                                   

import (
        "net/http"
        "github.com/zeromicro/go-zero/rest/httpx"
        "xxxxx/common/response"
        {{.ImportPackages}}
)

func {{.HandlerName}}(ctx *svc.ServiceContext) http.HandlerFunc {
        return func(w http.ResponseWriter, r *http.Request) {
                {{if .HasRequest}}var req types.{{.RequestType}}
                if err := httpx.Parse(r, &req); err != nil {
                        httpx.Error(w, err)
                                return
                }{{end}}

                l := logic.New{{.LogicType}}(r.Context(), ctx)
                {{if .HasResp}}resp, {{end}}err := l.{{.Call}}({{if .HasRequest}}&req{{end}})
                {{if .HasResp}}response.Response(w, resp, err){{else}}response.Response(w, nil, err){{end}}

        }   
}

回答

5

错误是什么?你调整了什么?

1

正如我将 handle.tpl 完全复制到 internal/handler/xxxhandler.go 的描述,我的意思是 xxxhandler.go 中的 {% raw %}、{% endraw %},我认为这些不应该出现在 xxxhandle.go 中

2

尝试查看https://pkg.go.dev/text/template

很明显,由于我们在 goctl 中没有自定义分隔符,因此不支持“{%”和“%}”分隔。