Maison  >  Article  >  développement back-end  >  Utilisez le framework Gin pour implémenter des fonctions de recherche et de filtrage

Utilisez le framework Gin pour implémenter des fonctions de recherche et de filtrage

WBOY
WBOYoriginal
2023-06-22 17:16:371598parcourir

Gin est un framework Web léger et évolutif qui devient de plus en plus populaire en raison de la vitesse et des performances du langage Go, ainsi que de sa simultanéité et de sa maintenabilité inégalées. Dans cet article, nous apprendrons comment utiliser le framework Gin pour implémenter les fonctionnalités de recherche et de filtrage.

Tout d’abord, nous devons configurer une application Gin de base. Pour ce faire, nous devons ajouter les dépendances requises dans le fichier go.mod et les installer. Ici, nous utilisons le framework Gin et la bibliothèque ORM de Go, GORM. Nous utiliserons MySQL comme base de données relationnelle.

Notre fichier go.mod devrait ressembler à ceci :

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
)

Pour la connexion à la base de données, nous utiliserons le style de format suivant :

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

Ensuite, nous devons importer gin et net/http depuis le package Gin.

import (
    "net/http"

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

Dans notre fonction principale, nous devons nous connecter à la base de données et créer une variable appelée db tout en activant le middleware par défaut de 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)
}

C'est notre configuration de base. Considérons maintenant la mise en œuvre des fonctionnalités de recherche et de filtrage.

Nous implémenterons des fonctions de recherche et de filtrage sur le modèle de données suivant.

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"`
}

Nous définirons le gestionnaire de requêtes suivant pour gérer nos requêtes POST.

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)
}

Ce gestionnaire nous permet de transmettre les paramètres de la requête POST dans la structure User et d'exécuter une requête dans la table de la base de données. Nous pouvons également gérer les requêtes d'autres manières :

  • LIKE
  • IN
  • NOT
  • OR

Ici, nous effectuerons des requêtes d'exécution dans l'application. Cela convient aux petites applications, mais cela peut entraîner une charge excessive du serveur pour les applications plus volumineuses. Une meilleure approche serait de déplacer la requête de recherche vers le front-end, en exploitant les ressources du navigateur du client pour la recherche/le filtrage.

Maintenant, nous devons lier la demande et le gestionnaire. Cela peut être fait via le routage Gin.

r.POST("/search", searchUsersHandler)

Grâce à cette route, nous pouvons faire une requête POST et envoyer une structure User à l'application, qui sera utilisée pour interroger les enregistrements utilisateur.

Voici comment implémenter la fonctionnalité de recherche et de filtrage à l'aide du framework Gin. Pour résumer, dans cet article, nous avons appris comment nous connecter à la base de données, utiliser le middleware par défaut de Gin, définir le modèle de données, écrire des gestionnaires de requêtes et lier des routes aux gestionnaires. L'application peut désormais être utilisée pour effectuer des opérations de base de recherche et de filtrage d'enregistrements de données dans une base de données relationnelle.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn