Gin フレームワークを使用して検索機能とフィルター機能を実装する

WBOY
リリース: 2023-06-22 17:16:37
オリジナル
1652 人が閲覧しました

Gin は、軽量で拡張可能な Web フレームワークで、Go 言語の速度とパフォーマンス、そして他の追随を許さない同時実行性と保守性により、ますます人気が高まっています。この記事では、Gin フレームワークを使用して検索およびフィルター機能を実装する方法を学びます。

まず、基本的な Jin アプリケーションをセットアップする必要があります。これを行うには、必要な依存関係を go.mod ファイルに追加してインストールする必要があります。ここでは、Gin フレームワークと Go の ORM ライブラリ GORM を使用します。リレーショナル データベースとして MySQL を使用します。

go.mod ファイルは次のようになります:

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
)
ログイン後にコピー

データベース接続には、次の形式の形式を使用します:

username:password@tcp(hostname:port)/database_name?charset=utf8mb4&parseTime=True&loc=Local
ログイン後にコピー

次に、開始する必要があります。 from gin と net/http を Gin パッケージにインポートします。

import (
    "net/http"

    "github.com/gin-gonic/gin"
)
ログイン後にコピー

メイン関数では、Gin のデフォルトのミドルウェアを有効にしながら、データベースに接続して db という変数を作成する必要があります。

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)
}
ログイン後にコピー

これが基本的なセットアップです。次に、検索およびフィルター機能の実装を検討してみましょう。

次のデータモデルに検索機能とフィルタリング機能を実装します。

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"`
}
ログイン後にコピー

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)
}
ログイン後にコピー

このハンドラーを使用すると、POST リクエストのパラメーターを User 構造に渡し、データベース テーブルでクエリを実行できます。他の方法でクエリを処理することもできます:

    #LIKE
  • IN
  • NOT
  • OR#Hereアプリケーションで実行時クエリを作成します。これは小規模なアプリケーションには問題ありませんが、大規模なアプリケーションでは過度のサーバー負荷が発生する可能性があります。より良いアプローチは、検索クエリをフロントエンドに移動し、クライアントのブラウザ リソースを検索/フィルタリングに利用することです。
  • 次に、リクエストとハンドラーをバインドする必要があります。これは、Gin ルーティングを介して実行できます。
r.POST("/search", searchUsersHandler)
ログイン後にコピー

このルートを通じて、POST リクエストを発行し、ユーザー レコードのクエリに使用される User 構造をアプリケーションに送信できます。

これは、Gin フレームワークを使用して検索機能とフィルター機能を実装する方法です。要約すると、この記事では、データベースへの接続、Gin のデフォルトのミドルウェアの使用、データ モデルの定義、リクエスト ハンドラーの作成、およびルートをハンドラーにバインドする方法を学びました。このアプリケーションを使用して、リレーショナル データベース内のデータ レコードの検索とフィルタリングの基本操作を実行できるようになりました。

以上がGin フレームワークを使用して検索機能とフィルター機能を実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート