Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Gunakan rangka kerja Gin untuk melaksanakan fungsi carian dan penapis

Gunakan rangka kerja Gin untuk melaksanakan fungsi carian dan penapis

WBOY
WBOYasal
2023-06-22 17:16:371635semak imbas

Gin ialah rangka kerja web yang ringan dan boleh dilanjutkan yang semakin popular berdasarkan kelajuan dan prestasi bahasa Go, serta keselarasan dan kebolehselenggaraannya. Dalam artikel ini, kita akan mempelajari cara menggunakan rangka kerja Gin untuk melaksanakan fungsi carian dan penapis.

Pertama, kita perlu menyediakan aplikasi Gin asas. Untuk melakukan ini, kita perlu menambah kebergantungan yang diperlukan dalam fail go.mod dan memasangnya. Di sini kami menggunakan rangka kerja Gin dan perpustakaan ORM Go, GORM. Kami akan menggunakan MySQL sebagai pangkalan data hubungan kami.

Fail go.mod kami sepatutnya kelihatan seperti ini:

module github.com/mygithubaccount/myginapp

require (
    github.com/gin-gonic/gin v1.7.2
    gorm.io/driver/mysql v1.2.1
    gorm.io/gorm v1.21.9
)

Untuk sambungan pangkalan data, kami akan menggunakan gaya format berikut:

username:password@tcp(hostname:port)/database_name?charset=utf8mb4&parseTime=True&loc=Local

Seterusnya, kita perlu mulakan daripada Import gin dan net/http ke dalam pakej Gin.

import (
    "net/http"

    "github.com/gin-gonic/gin"
)

Dalam fungsi utama kami, kami perlu menyambung ke pangkalan data dan mencipta pembolehubah yang dipanggil db, sambil mendayakan perisian tengah lalai Gin.

func main() {
    dsn := "username:password@tcp(hostname:port)/database_name?charset=utf8mb4&parseTime=True&loc=Local"
    db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
    
    if err != nil {
        panic("failed to connect to database")
    }

    r := gin.Default()
    r.Use(cors.Default())

    // Routes
    r.GET("/healthcheck", healthCheckHandler)

    // Port binding
    port := os.Getenv("PORT")

    if port == "" {
        port = "8080"
    }

    r.Run(":" + port)
}

Ini adalah persediaan asas kami. Sekarang mari kita pertimbangkan untuk melaksanakan fungsi carian dan penapis.

Kami akan melaksanakan fungsi carian dan penapisan pada model data berikut.

type User struct {
    ID        uint   `json:"id" gorm:"primarykey"`
    FirstName string `json:"firstName"`
    LastName  string `json:"lastName"`
    Age       int    `json:"age"`
    Gender    string `json:"gender"`
    Email     string `json:"email" gorm:"uniqueIndex"`
}

Kami akan mentakrifkan pengendali permintaan berikut untuk mengendalikan permintaan POST kami.

func searchUsersHandler(c *gin.Context) {
    var filter User
    var users []User

    if err := c.ShouldBindJSON(&filter); err != nil {
        c.AbortWithStatus(http.StatusBadRequest)
        return
    }

    db.Where(&filter).Find(&users)
    c.JSON(http.StatusOK, users)
}

Pengendali ini membenarkan kami menghantar parameter permintaan POST ke dalam struktur Pengguna dan melaksanakan pertanyaan dalam jadual pangkalan data. Kami juga boleh mengendalikan pertanyaan dengan cara lain:

  • LIKE
  • IN
  • BUKAN
  • ATAU

Di sini kami akan membuat pertanyaan masa jalan dalam aplikasi. Ini baik untuk aplikasi kecil, tetapi ini boleh menyebabkan beban pelayan yang berlebihan untuk aplikasi yang lebih besar. Pendekatan yang lebih baik ialah mengalihkan pertanyaan carian ke bahagian hadapan, memanfaatkan sumber penyemak imbas pelanggan untuk mencari/menapis.

Sekarang kita perlu mengikat permintaan dan pengendali bersama-sama. Ini boleh dilakukan melalui penghalaan Gin.

r.POST("/search", searchUsersHandler)

Melalui laluan ini, kami boleh membuat permintaan POST dan menghantar struktur Pengguna kepada aplikasi, yang akan digunakan untuk menanyakan rekod pengguna.

Ini ialah cara menggunakan rangka kerja Gin untuk melaksanakan fungsi carian dan penapis. Untuk meringkaskan, dalam artikel ini kami mempelajari cara menyambung ke pangkalan data, menggunakan perisian tengah lalai Gin, mentakrifkan model data, menulis pengendali permintaan dan mengikat laluan kepada pengendali. Aplikasi ini kini boleh digunakan untuk melaksanakan operasi asas mencari dan menapis rekod data dalam pangkalan data hubungan.

Atas ialah kandungan terperinci Gunakan rangka kerja Gin untuk melaksanakan fungsi carian dan penapis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn