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接口
- 首先,我们在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"`
}
- 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
}
- 将我们刚才写的chat控制器绑定上去
📷 [图片 token=MNiabHIrUoFZJoxhbB6cGLpbnUg(未能下载,见飞书原文)]
- 最后,我们需要将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(未能下载,见飞书原文)]