Maison > Article > développement back-end > golang gin fournit un itinéraire pour différentes requêtes
l'éditeur php Xinyi vous présentera un puissant framework web, Golang Gin. Gin est un framework Web léger basé sur Golang qui fournit un itinéraire concis et efficace pour différentes requêtes. Qu'il s'agisse d'une requête GET ou d'une requête POST, Gin peut la gérer facilement, rendant votre processus de développement plus simple et plus rapide. Qu'il s'agisse de traiter des données JSON ou des modèles HTML, Gin offre des fonctionnalités riches et une évolutivité flexible. Que vous soyez débutant ou développeur expérimenté, Gin est votre meilleur choix.
Est-il possible d'avoir un itinéraire contenant du :item
(name) 或 :id
dans le gin ?
Exemple :
r.get("/inventories/(:item|:id)", controllers.findinventory)
Alors je pourrais faire quelque chose de similaire...
func FindInventory(g *gin.Context) { var inv models.Inventory if item: err := models.DB.Where("item = ?", g.Param("item")).First(&inv).Error else: err := models.DB.Where("id = ?", g.Param("id")).First(&inv).Error if err != nil { g.JSON(http.StatusBadRequest, gin.H{"error": "Record not found!"}) return } g.JSON(http.StatusOK, gin.H{"data": inv}) }
Ou existe-t-il un moyen d'utiliser une seule route pour effectuer les deux types de requêtes ?
Non, cette opération n'est pas prise en charge. Mais il doit y avoir un moyen de différencier l'élément et l'identifiant. Il est donc facile de mettre en œuvre la logique vous-même.
Comme ça :
r.get("/inventories/:item", controllers.findinventory)
func FindInventory(g *gin.Context) { var inv models.Inventory item := g.Param("item") id, err := strconv.Atoi(item) if err != nil { err := models.DB.Where("item = ?", item).First(&inv).Error } else { err := models.DB.Where("id = ?", id).First(&inv).Error } if err != nil { g.JSON(http.StatusBadRequest, gin.H{"error": "Record not found!"}) return } g.JSON(http.StatusOK, gin.H{"data": inv}) }
Mais s'il est impossible de le distinguer, vous devez alors avoir deux chemins de requête distincts, comme
/inventories/by-item/:item
/inventories/by-id/:id
Mise à jour 2023-05-31 : Fusion des commentaires de @epicadidash et @boyvinall dans la réponse. Merci!
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!