スキップしてメイン コンテンツに移動

Gin初心者パラメータ入門

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初心者でもリクエストパラメータを自在に扱えるようになります。ぜひ試してみてください。

この記事はAIによって作成されました。

コメント