Maison > Article > développement back-end > Comment ajouter un nom à la route du gin comme Laravel ?
l'éditeur php Strawberry vous présentera comment ajouter un nom à la route du Gin comme Laravel. Gin est un framework Web en langage Go rapide, flexible et efficace, mais contrairement à Laravel, il n'a pas de fonctionnalité de nom de route intégrée. Cependant, nous pouvons réaliser cette fonctionnalité avec quelques astuces simples. Dans cet article, nous partagerons une méthode simple pour ajouter un nom aux routes Gin afin d'améliorer la lisibilité et la maintenabilité du code. commençons!
Je souhaite ajouter un nom à la route du gin car je dois collecter toutes les routes et les afficher sur la page. route.go
func main() { r := gin.Default() r.GET("/api/user/list", handler1) r.POST("/api/user/create",handle2) r.Run() }
Voici la structure que je dois collecter :
var Routes []Route type Route struct { Name string `json:"name"` Sign string `json:"sign"` HttpMethod string `json:"http_method"` HttpPath string `json:"http_path"` }
Qu'ai-je essayé ?
1. Il ne s'agit pas d'une méthode automatique et nécessite une maintenance manuelle des noms de routes.
var RouteNameMap = map[string]string{ "api.user.list":"Get User List", "api.user.create": "Create an User" } func ParseRoutes(r *gin.Engine, group string) { routes := r.Routes() for _, route := range routes { if strings.HasPrefix(route.Path, group) { sign := strings.Replace(strings.Trim(route.Path, "/"), "/", ".", -1) item := Route{ Name: RouteNameMap[sign], Sign: sign, HttpMethod: route.Method, HttpPath: route.Path, } Routes = append(Routes, item) } } }
3. Semblable à la première méthode :
func main() { r := gin.Default() MyGET(r,"/api/user/list", handler1,"Get User List") MyPOST(r,"/api/user/create",handle2,"Create an User") r.Run() } func MyPOST(engine *gin.Engine, path string, handlerFunc gin.HandlerFunc, name string) { engine.POST(path, handlerFunc) Routes = append(Routes, Route{ Name: name, Sign: strings.Replace(strings.Trim(path, "/"), "/", ".", -1), HttpMethod: "POST", HttpPath: path, }) } output: [{ "name": "Get User List", "sign": "api.user.list", "http_method": "GET", "http_path": "/api/user/list" }, { "name": "Create an User", "sign": "api.user.create", "http_method": "post", "http_path": "/api/user/create" } ]
Mais j'estime que cette méthode ne répond pas aux normes. J'espère ajouter un paramètre de nom similaire aux méthodes POST et GET de gin. Et ce paramètre de nom peut être analysé dans la méthode ParseRoutes, que dois-je faire ? Merci
Alors, quel est le problème avec la troisième méthode ?
Si le framework Route of the Gin ne fournit pas de paramètres de réglage Name
, alors vous ne pouvez faire que ceci :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!