Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Modularização das Rotas

No caso de um projeto com muitas entidades, como posso modularizar as rotas para cada entidade em específico?

Exemplo: Além de aluno eu tenho a entidade Materia, as rotas com as operações de matéria ficariam junto com as rotas de Aluno?

1 resposta
solução!

Olá Gustavo. Tudo bem?

Para modularizar as rotas de diferentes entidades, você pode criar arquivos separados para cada conjunto de rotas relacionadas a uma entidade específica. Por exemplo, você pode criar um arquivo aluno_routes.go para as rotas relacionadas a "Aluno" e outro arquivo materia_routes.go para as rotas de "Materia". Cada arquivo pode ser responsável por definir as rotas específicas de sua respectiva entidade.

Aqui está um exemplo de código:

  1. Crie uma pasta routes: Dentro dessa pasta, você pode criar arquivos separados para cada entidade.

  2. Arquivo aluno_routes.go:

    package routes
    
    import (
        "github.com/gin-gonic/gin"
        "seu_projeto/controllers"
    )
    
    func AlunoRoutes(router *gin.Engine) {
        alunoGroup := router.Group("/alunos")
        {
            alunoGroup.GET("/", controllers.ExibeTodosAlunos)
            alunoGroup.POST("/", controllers.CriaAluno)
            // Outras rotas de aluno
        }
    }
    
  3. Arquivo materia_routes.go:

    package routes
    
    import (
        "github.com/gin-gonic/gin"
        "seu_projeto/controllers"
    )
    
    func MateriaRoutes(router *gin.Engine) {
        materiaGroup := router.Group("/materias")
        {
            materiaGroup.GET("/", controllers.ExibeTodasMaterias)
            materiaGroup.POST("/", controllers.CriaMateria)
            // Outras rotas de matéria
        }
    }
    
  4. No arquivo main.go ou onde você inicializa o servidor, você pode importar essas funções e chamá-las para registrar as rotas:

    package main
    
    import (
        "github.com/gin-gonic/gin"
        "seu_projeto/routes"
    )
    
    func main() {
        router := gin.Default()
    
        routes.AlunoRoutes(router)
        routes.MateriaRoutes(router)
    
        router.Run(":8080")
    }
    

Dessa forma, cada conjunto de rotas está bem separado e organizado, o que facilita a manutenção e a escalabilidade do seu projeto. Espero ter ajudado.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!