`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)
`
这样,列表方法的名称统一了,
这两种方法,各有什么优劣么?
另外,再看了遍你的原文。
你原文里的问题,是你对go的思路还不够了解,脑洞也不够。
你完全不该去建立个控制器对象,只需要把代码放在不同的包里面,直接引用包里export出来的action就可所以了。
比如
```go
import (
"modules/middlewares"
"modules/captcha"
"modules/ticket/ticketactions"
"modules/user/session"
"modules/user/useractions"
)
func newTicketRouter() router.Router {
var Router = httprouter.New()
Router.
POST("/create").
HandleFunc(ticketactions.ActionCreate)
Router.
GET("/list").
HandleFunc(ticketactions.ActionList)
Router.
GET("/get/:id").
HandleFunc(ticketactions.ActionGet)
Router.
POST("/reply/:id").
HandleFunc(ticketactions.ActionReply)
return Router
}
```
#6
更多评论