"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo organizar rutas en Gin: una guía para la definición de rutas agrupadas?

¿Cómo organizar rutas en Gin: una guía para la definición de rutas agrupadas?

Publicado el 2024-11-08
Navegar:914

How to Organize Routes in Gin: A Guide to Grouped Route Definition?

Cómo organizar rutas en Gin

Para evitar saturar el archivo principal con definiciones de rutas, puede agrupar rutas en archivos separados. Este enfoque permite una mejor organización y mantenimiento del código.

Para crear una agrupación de rutas anidadas, puede almacenar la variable del enrutador en una estructura o variable global. Luego, los archivos individuales pueden agregar controladores a esta instancia de enrutador compartido.

Ejemplo de implementación

routes.go

package app

import (
    "github.com/gin-gonic/gin"
)

type routes struct {
    router *gin.Engine
}

func NewRoutes() routes {
    return routes{
        router: gin.Default(),
    }
}

func (r routes) addPing(rg *gin.RouterGroup) { }
func (r routes) addUsers(rg *gin.RouterGroup) { }

func (r routes) Run(addr ...string) error { return r.router.Run() }

ping.go

package app

import "github.com/gin-gonic/gin"

func (r routes) addPing(rg *gin.RouterGroup) {
    ping := rg.Group("/ping")
    ping.GET("/", pongFunction)
}

users.go

package app

import "github.com/gin-gonic/gin"

func (r routes) addUsers(rg *gin.RouterGroup) {
    users := rg.Group("/users")
    users.GET("/", getUsersFunction)
}
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3