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?
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?
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:
Crie uma pasta routes
: Dentro dessa pasta, você pode criar arquivos separados para cada entidade.
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
}
}
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
}
}
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.