Gin初心者パラメータ入門
はじめに
Gin初心者の方にとって、リクエストパラメータの取得は最初の壁の一つです。この記事では、c.Param と c.Query を使ったパラメータ取得方法を中心に、URLパラメータ、クエリパラメータ、パス変数の違いと実際のコード例を紹介します。これを読めば、リクエストパラメータを自在に扱えるようになります。
URLパラメータとパス変数
URLパラメータは、ルーティング時に定義したパス変数として扱われます。Gin では c.Param("name") で取得できます。以下は典型的な例です。
router.GET("/users/:id", func(c *gin.Context) {
id := c.Param("id") // 例: /users/123 で id は "123"
c.JSON(200, gin.H{"user_id": id})
})
このように、パス変数は必須であり、URL の構造に埋め込まれた情報を取得する際に使います。パス変数は URL パラメータの一種で、リクエストパラメータの中でも特に重要です。
クエリパラメータ
クエリパラメータは、URL の末尾に ?key=value の形で付与される情報です。Gin では c.Query("key") で取得できます。複数値を取得したい場合は c.QueryArray("key") を使用します。
router.GET("/search", func(c *gin.Context) {
keyword := c.Query("q") // 例: /search?q=gin で keyword は "gin"
page := c.DefaultQuery("page", "1") // デフォルト値を設定
c.JSON(200, gin.H{"keyword": keyword, "page": page})
})
クエリパラメータはオプションであり、リクエストパラメータの中でも柔軟に扱える点が特徴です。
実践例とまとめ
以下に、パス変数とクエリパラメータを組み合わせた実際のハンドラ例を示します。これにより、Gin初心者でもリクエストパラメータを総合的に取得できるようになります。
router.GET("/articles/:category", func(c *gin.Context) {
category := c.Param("category") // パス変数
sort := c.DefaultQuery("sort", "asc") // クエリパラメータ
page := c.DefaultQuery("page", "1") // クエリパラメータ
// 取得したパラメータを使ってデータベース検索などを行う
// ここでは簡易的に JSON で返却
c.JSON(200, gin.H{
"category": category,
"sort": sort,
"page": page,
})
})
まとめると、Gin でのパラメータ取得は以下のように分類できます。
- パス変数(URLパラメータ):
c.Param - クエリパラメータ:
c.Query/c.DefaultQuery - リクエストパラメータ全般: 上記を組み合わせて取得
これらを理解し、実際にコードを書いてみることで、Gin初心者でもリクエストパラメータを自在に扱えるようになります。ぜひ試してみてください。
コメント
コメントを投稿