Rumah > Artikel > pembangunan bahagian belakang > golang gin menyediakan laluan untuk pertanyaan yang berbeza
editor php Xinyi akan memperkenalkan anda kepada rangka kerja web yang berkuasa, Golang Gin. Gin ialah rangka kerja web ringan berdasarkan Golang yang menyediakan laluan ringkas dan cekap untuk pertanyaan yang berbeza. Sama ada permintaan GET atau permintaan POST, Gin boleh mengendalikannya dengan mudah, menjadikan proses pembangunan anda lebih mudah dan pantas. Sama ada memproses data JSON atau templat HTML, Gin menyediakan fungsi yang kaya dan kebolehskalaan yang fleksibel. Sama ada anda seorang pemula atau pembangun berpengalaman, Gin ialah pilihan terbaik anda.
Adakah mungkin untuk mempunyai laluan yang mengandungi :item
(name) 或 :id
dalam gin?
Contoh:
r.get("/inventories/(:item|:id)", controllers.findinventory)
Kemudian saya mungkin melakukan sesuatu yang serupa...
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}) }
Atau adakah terdapat cara untuk menggunakan satu laluan untuk melaksanakan kedua-dua jenis pertanyaan?
Tidak, operasi ini tidak disokong. Tetapi mesti ada beberapa cara untuk membezakan antara item dan id. Jadi mudah untuk melaksanakan logik itu sendiri.
Seperti ini:
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}) }
Tetapi jika ia tidak dapat dibezakan, maka anda perlu mempunyai dua laluan permintaan yang berasingan, seperti
/inventories/by-item/:item
/inventories/by-id/:id
Kemas kini 2023-05-31: Menggabungkan komen daripada @epicadidash dan @boyvinall sebagai jawapan. Terima kasih!
Atas ialah kandungan terperinci golang gin menyediakan laluan untuk pertanyaan yang berbeza. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!