goframe框架

GoFrame 是一款模块化、高性能的Go 语言开发框架。 如果您想使用 Golang 开发一个业务型项目,无论是小型还是中大型项目,GoFrame 是您的不二之选。如果您想开发一个 Golang 组件库,GoFrame 提供开箱即用、丰富强大的基础组件库也能助您的工作事半功倍。https://goframe.org/

安装框架

https://goframe.org/quick/scaffold-index

使用脚手架快速启动一个http服务

gf init demo -u
cd demo && gf run main.go

配置Goland,使得能自动生成代码

新增chat接口

  1. 首先,我们在api目录下依葫芦画瓢创建chat/v1目录,并编写Chat接口

📷 [图片 token=QQ1UbNIquoFdrrx8I6lcddNanHd(未能下载,见飞书原文)]

type ChatReq struct {
    g.Meta   `path:"/chat" method:"get" summary:"对话"`
    Id       string
    Question string
}

type ChatRes struct {
    Answer string `json:"answer"`
}
  1. Ctrl+S保存,此时框架会自动帮我们生成internal/controller/chat控制层的代码。我们返回一个chat demo字符串回去

📷 [图片 token=WEDobzrNGo9yNMxdAQpc2Uj9ncc(未能下载,见飞书原文)]

func (c *ControllerV1) Chat(ctx context.Context, req *v1.ChatReq) (res *v1.ChatRes, err error) {
    return &v1.ChatRes{Answer: "chat demo"}, nil
}
  1. 将我们刚才写的chat控制器绑定上去

📷 [图片 token=MNiabHIrUoFZJoxhbB6cGLpbnUg(未能下载,见飞书原文)]

  1. 最后,我们需要将collector层的返回值返回出去

📷 [图片 token=MuqZbODrvogywix0U77cWLuwnvc(未能下载,见飞书原文)]

func main() {
    s := g.Server()
    s.Group("/api", func(group *ghttp.RouterGroup) {
       group.Middleware(ResponseMiddleware)
       group.Bind(chat.NewV1())
    })
    s.SetPort(6872)
    s.Run()
}

func ResponseMiddleware(r *ghttp.Request) {
    r.Middleware.Next()
    var (
       msg string
       res = r.GetHandlerResponse()
       err = r.GetError()
    )
    if err != nil {
       msg = err.Error()
    } else {
       msg = "OK"
    }
    r.Response.WriteJson(Response{
       Message: msg,
       Data:    res,
    })
}

type Response struct {
    Message string      `json:"message" dc:"消息提示"`
    Data    interface{} `json:"data"    dc:"执行结果"`
}

运行

go run main.go 看到route里面有刚才写的接口就说明成功了,赶快试一试吧~

📷 [图片 token=OggPb9ghToWnumxhQtycXrFAngc(未能下载,见飞书原文)]

📷 [图片 token=M586bpguroPIEsxcX7echucMnHb(未能下载,见飞书原文)]