`gin` 的路由一般是这样写的。
`
route.GET("/tags",GetTags)
route.GET("/articles",GetArticles)
route.GET("/authors",GetAuthors)
`
这样写的话,意味着 `Tags` 控制器里的列表,方法名叫 `GetTags` ,`Articles` 控制器里的列表功能,叫 `GetArticles` , `Author` 控制器里的列表其方法名叫 `GetAuthors`. 有没有办法把他们的方法名统一起来呢,都叫 `func Index` 或者 `func List` 不好吗?
另一种方法,是这样。
`
route.GET("/tags",(&Controller.TagsController{}).Index)
route.GET("/articles",(&Controller.ArticlesController{}).Index)
route.GET("/authors",(&Controller.AuthorsController{}).Index)
`
这样,列表方法的名称统一了,
这两种方法,各有什么优劣么?
另外就是你的例子里路由最大的优势,自注释性体现的不明显。
我找点我大概的代码看一下,你就会发现,哪怕我把注释全去了,你也能够在一个文件里大概的了解到这个uri大概做了什么,有那些控制动作。
第二种方式需要看继承树,虽然功能强大,调整简单,但不够直观
```go
var PublishMiddlewares = func() middleware.Middlewares {
return middleware.Middlewares{
protecters.ProtectMiddleware("appkey"),
middlewares.PublishExists(),
au.New().WithAny(
au.MustParse("root"),
au.MustParse("publishall"),
au.MustParseWith(
"publish:id={{0}}",
httpinfomanager.MustGetStringField("filename").LoadStringInfo,
),
).ServeMiddleware,
}
}
var RouterFactory = router.NewFactory(func() router.Router {
var Router = httprouter.New()
Router.StripPrefix("/publish").
Use(PublishMiddlewares()...).
Handle(RouterPublishFactory.CreateRouter())
}
var RouterPublishFactory = router.NewFactory(func() router.Router {
var Router = httprouter.New()
Router.POST("/:path").
Handle(httppublish.CreatePublishHandler(notificationpublisher.Publisher, notificationbuilder.Builder))
return Router
})
```
#5
更多评论