Golang Gin-Gonic разделяет маршруты на несколько файлов

Я хочу разделить файл route.go на несколько файлов, чтобы каждая группа находилась в своем собственном пакете. Может ли кто-нибудь указать мне пример кода, где кто-то сделал это с Джином?

i.e.

package auth
...
auth = route.Group("/auth"){
    auth.GET(...
    auth.POST(...
}
...

package users
...
user = route.Group("/user"){
    user.GET(...
    user.POST(...
}
...

package main
import (
     "auth"
     "users"
)
...
router = gin.Default()
router.Register(auth.auth, users.user)
router.Run()
...

person watr    schedule 23.03.2017    source источник
comment
Я посмотрел на этот вопрос и ответ на него. Однако вопрос и ответ были неясными и несколько неверными, поскольку они использовали локальные пути импорта. Ответ был также неясен относительно решения. Я чувствовал, что мой вопрос и ответ более ясны.   -  person watr    schedule 23.03.2017
comment
Это не относится к делу. Если у вас есть лучший ответ на существующий вопрос, опубликуйте его как ответ на этот вопрос. Если существующий вопрос неясен, отредактируйте его. Как бы то ни было, ваш вопрос явно дублируется.   -  person Zoyd    schedule 23.03.2017
comment
Я не могу удалить вопрос, поэтому пометил его для закрытия из-за дублирования.   -  person watr    schedule 24.03.2017
comment
При более глубоком рассмотрении вопроса, который был отмечен как предыдущий аналогичный вопрос, и при рассмотрении ответов я обнаружил, что мой вопрос и ответ достаточно различаются, что сообщество извлекло из него достаточно пользы, чтобы он существовал как отдельный вопрос.   -  person watr    schedule 04.12.2019
comment
Мне нравятся ваши вопросы и ответы. Это действительно лучше и понятнее, чем в дублирующем вопросе, спасибо.   -  person Carson    schedule 08.02.2021
comment
Спасибо, Карсон. Я ценю вашу поддержку!   -  person watr    schedule 09.02.2021


Ответы (1)


Способ сделать это — создать в каждом функцию, которая принимает маршрут в качестве параметра, а затем добавляет маршруты к параметру:

package auth
import "...gin"
func Routes(route *gin.Engine)
auth := route.Group("/auth"){
    auth.GET(...
    auth.POST(...
}
...

package users
import "...gin"
func Routes(route *gin.Engine)
user := route.Group("/user"){
    user.GET(...
    user.POST(...
}
...

package main
import (
     "github.com/username/package/sub/auth"
     "github.com/username/package/sub/users"
     "github.com/gin-gonic/gin"
)
...
router := gin.Default()
auth.Routes(router) //Added all auth routes
user.Routes(router) //Added all user routes
router.Run()
...
person watr    schedule 23.03.2017