代码拉取完成,页面将自动刷新
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)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。