2 Star 1 Fork 0

mrwhen/gone

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
api.go 2.30 KB
一键复制 编辑 原始数据 按行查看 历史
哎呦-不错的猪公 提交于 2022-12-24 11:40 +08:00 . fix: 修改module name
package demo
import (
"fmt"
"gitee.com/mrwhen/gone/app/provider/demo"
"gitee.com/mrwhen/gone/framework/contract"
"gitee.com/mrwhen/gone/framework/gin"
"gitee.com/mrwhen/gone/framework/middleware"
)
type DemoApi struct {
service *Service
}
func Register(r *gin.Engine) error {
api := NewDemoApi()
r.Bind(&demo.DemoServiceProvider{})
// 需求1+2:HTTP方法+静态路由匹配
r.GET("/user/login", middleware.Test3(), middleware.Test2(), api.UserLoginController)
// 需求3:批量通用前缀
subjectApi := r.Group("/subject")
{
// 需求4:动态路由
subjectApi.DELETE("/:id", api.SubjectDelController)
subjectApi.PUT("/:id", api.SubjectPutController)
subjectApi.POST("/:id", api.SubjectPostController)
subjectApi.GET("/all", middleware.Test3(), api.SubjectListController)
// 嵌套路由
subjectInnerApi := subjectApi.Group("/info")
{
subjectInnerApi.GET("/name", api.SubjectInfoNameController)
}
}
// Test
r.GET("/test", api.Test)
return nil
}
func NewDemoApi() *DemoApi {
return &DemoApi{
service: NewService(),
}
}
func (api *DemoApi) Test(c *gin.Context) {
configService := c.MustMake(contract.ConfigKey).(contract.Config)
password := configService.GetString("database.mysql.password")
logService := c.MustMake(contract.LogKey).(contract.Log)
logService.Trace(c, "test log", map[string]interface{}{"hello": "world"})
c.JSON(200, password)
}
func (api *DemoApi) UserLoginController(c *gin.Context) {
// 打印控制器名字
fmt.Println(c.QueryAll())
c.ISetOkStatus().IJson("ok, UserLoginController")
}
func (api *DemoApi) SubjectListController(c *gin.Context) {
demoService := c.MustMake(demo.Key).(demo.Service)
foo := demoService.GetFoo()
c.ISetOkStatus().IJson(foo)
}
func (api *DemoApi) SubjectPostController(c *gin.Context) {
id, _ := c.DefaultParamInt("id", 555)
fmt.Println(id)
c.ISetOkStatus().IJson("POST " + c.Request.URL.Path)
}
func (api *DemoApi) SubjectPutController(c *gin.Context) {
c.ISetOkStatus().IJson("PUT " + c.Request.URL.Path)
}
func (api *DemoApi) SubjectDelController(c *gin.Context) {
c.ISetOkStatus().IJson("DELETE " + c.Request.URL.Path)
}
func (api *DemoApi) SubjectInfoNameController(c *gin.Context) {
subjectName := api.service.GetSubjectInfoName()
// mapper dto and model
// todo
c.ISetOkStatus().IJson("subject info name: " + subjectName)
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/mrwhen/gone.git
git@gitee.com:mrwhen/gone.git
mrwhen
gone
gone
v0.0.1-alpha

搜索帮助