Gin は、軽量で拡張可能な Web フレームワークで、Go 言語の速度とパフォーマンス、そして他の追随を許さない同時実行性と保守性により、ますます人気が高まっています。この記事では、Gin フレームワークを使用して検索およびフィルター機能を実装する方法を学びます。
まず、基本的な Jin アプリケーションをセットアップする必要があります。これを行うには、必要な依存関係を go.mod ファイルに追加してインストールする必要があります。ここでは、Gin フレームワークと Go の ORM ライブラリ GORM を使用します。リレーショナル データベースとして MySQL を使用します。
go.mod ファイルは次のようになります:
1 2 3 4 5 6 7 | 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
)
|
ログイン後にコピー
データベース接続には、次の形式の形式を使用します:
1 | username:password@tcp(hostname:port)/database_name?charset=utf8mb4&parseTime=True&loc=Local
|
ログイン後にコピー
次に、開始する必要があります。 from gin と net/http を Gin パッケージにインポートします。
1 2 3 4 5 | import (
"net/http"
"github.com/gin-gonic/gin"
)
|
ログイン後にコピー
メイン関数では、Gin のデフォルトのミドルウェアを有効にしながら、データベースに接続して db という変数を作成する必要があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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())
r.GET( "/healthcheck" , healthCheckHandler)
port := os. Getenv ( "PORT" )
if port == "" {
port = "8080"
}
r.Run( ":" + port)
}
|
ログイン後にコピー
これが基本的なセットアップです。次に、検索およびフィルター機能の実装を検討してみましょう。
次のデータモデルに検索機能とフィルタリング機能を実装します。
1 2 3 4 5 6 7 8 | 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 リクエストを処理するために、次のリクエスト ハンドラを定義します。
1 2 3 4 5 6 7 8 9 10 11 12 | 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 構造に渡し、データベース テーブルでクエリを実行できます。他の方法でクエリを処理することもできます:
#LIKEINNOTOR#Hereアプリケーションで実行時クエリを作成します。これは小規模なアプリケーションには問題ありませんが、大規模なアプリケーションでは過度のサーバー負荷が発生する可能性があります。より良いアプローチは、検索クエリをフロントエンドに移動し、クライアントのブラウザ リソースを検索/フィルタリングに利用することです。 次に、リクエストとハンドラーをバインドする必要があります。これは、Gin ルーティングを介して実行できます。
1 | r.POST( "/search" , searchUsersHandler)
|
ログイン後にコピー
このルートを通じて、POST リクエストを発行し、ユーザー レコードのクエリに使用される User 構造をアプリケーションに送信できます。
これは、Gin フレームワークを使用して検索機能とフィルター機能を実装する方法です。要約すると、この記事では、データベースへの接続、Gin のデフォルトのミドルウェアの使用、データ モデルの定義、リクエスト ハンドラーの作成、およびルートをハンドラーにバインドする方法を学びました。このアプリケーションを使用して、リレーショナル データベース内のデータ レコードの検索とフィルタリングの基本操作を実行できるようになりました。
以上がGin フレームワークを使用して検索機能とフィルター機能を実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。