Skip to content

URL Query Parameters

Learn how to handle URL query parameters in Iris.

Basic Query Parameters

go
package main

import "github.com/kataras/iris/v12"

func main() {
    app := iris.New()

    // GET /search?q=example&page=1
    app.Get("/search", func(ctx iris.Context) {
        query := ctx.URLParam("q")
        page := ctx.URLParamIntDefault("page", 1)

        ctx.JSON(iris.Map{
            "query": query,
            "page": page,
        })
    })

    app.Listen(":8080")
}

Multiple Values

go
app.Get("/tags", func(ctx iris.Context) {
    // GET /tags?tag=go&tag=web&tag=iris
    tags := ctx.URLParamSlice("tag")

    ctx.JSON(iris.Map{
        "tags": tags,
    })
})

Type Conversion

go
app.Get("/filters", func(ctx iris.Context) {
    // String parameter
    name := ctx.URLParam("name")

    // Integer parameter with default
    page := ctx.URLParamIntDefault("page", 1)

    // Float parameter
    price := ctx.URLParamFloat64Default("price", 0.0)

    // Boolean parameter
    active := ctx.URLParamBool("active")

    ctx.JSON(iris.Map{
        "name": name,
        "page": page,
        "price": price,
        "active": active,
    })
})

Required Parameters

go
app.Get("/required", func(ctx iris.Context) {
    id := ctx.URLParam("id")
    if id == "" {
        ctx.StopWithProblem(iris.StatusBadRequest, iris.NewProblem().
            Title("Validation Error").
            Detail("ID parameter is required"))
        return
    }

    ctx.JSON(iris.Map{
        "id": id,
    })
})

Best Practices

  1. Validation:

    • Validate required parameters
    • Check parameter types
    • Set default values
    • Handle missing values
    • Sanitize input
  2. Security:

    • Validate parameter length
    • Check parameter format
    • Prevent injection
    • Escape special characters
    • Log suspicious input
  3. Performance:

    • Cache parsed values
    • Use appropriate types
    • Handle large queries
    • Monitor query size
    • Optimize parsing
  4. Error Handling:

    • Provide clear messages
    • Handle invalid types
    • Log validation errors
    • Return proper status
    • Document requirements

Built with excellence by Hellenic Development, delivering enterprise-grade solutions.