Heim > Artikel > Backend-Entwicklung > Golang Gin bietet eine Route für verschiedene Abfragen
php-Editor Xinyi stellt Ihnen ein leistungsstarkes Web-Framework vor: Golang Gin. Gin ist ein leichtes Web-Framework auf Golang-Basis, das eine prägnante und effiziente Route für verschiedene Abfragen bietet. Egal, ob es sich um eine GET-Anfrage oder eine POST-Anfrage handelt, Gin kann damit problemlos umgehen und macht Ihren Entwicklungsprozess einfacher und schneller. Unabhängig davon, ob JSON-Daten oder HTML-Vorlagen verarbeitet werden, bietet Gin umfassende Funktionalität und flexible Erweiterbarkeit. Egal, ob Sie Anfänger oder erfahrener Entwickler sind, Gin ist Ihre beste Wahl.
Ist es möglich, eine Route zu haben, die :item
(name) 或 :id
in Gin enthält?
Beispiel:
r.get("/inventories/(:item|:id)", controllers.findinventory)
Dann mache ich vielleicht etwas Ähnliches...
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}) }
Oder gibt es eine Möglichkeit, eine Route zum Ausführen beider Arten von Abfragen zu verwenden?
Nein, dieser Vorgang wird nicht unterstützt. Aber es muss eine Möglichkeit geben, Artikel und ID zu unterscheiden. So ist es einfach, die Logik selbst zu implementieren.
So:
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}) }
Aber wenn es nicht unterschieden werden kann, müssen Sie zwei separate Anforderungspfade haben, z. B.
/inventories/by-item/:item
/inventories/by-id/:id
Update 31.05.2023: Kommentare von @epicadidash und @boyvinall in der Antwort zusammengeführt. Danke!
Das obige ist der detaillierte Inhalt vonGolang Gin bietet eine Route für verschiedene Abfragen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!