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
Validation:
- Validate required parameters
- Check parameter types
- Set default values
- Handle missing values
- Sanitize input
Security:
- Validate parameter length
- Check parameter format
- Prevent injection
- Escape special characters
- Log suspicious input
Performance:
- Cache parsed values
- Use appropriate types
- Handle large queries
- Monitor query size
- Optimize parsing
Error Handling:
- Provide clear messages
- Handle invalid types
- Log validation errors
- Return proper status
- Document requirements