# Fiber v3 Part 4: Query

Query parameter adalah cara untuk mengirimkan data ke server menggunakan URL. Query parameter biasanya digunakan untuk melakukan filtering, sorting, dan juga searching. Query parameter biasanya digunakan pada request dengan method `GET`.

Dalam artikel ini, kita akan membahas tentang bagaimana cara melakukan routing dengan query parameter pada aplikasi yang dibangun menggunakan Fiber.

## Routing dengan Query Parameter

Fiber memungkinkan kita untuk melakukan routing dengan query parameter. Berikut adalah contoh bagaimana cara melakukan routing dengan query parameter pada aplikasi yang dibangun menggunakan Fiber:

```go
package main

import "github.com/gofiber/fiber/v3"

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

    app.Get("/user", func(c fiber.Ctx) error {
        name := c.Query("name")
        return c.SendString("Hello, " + name)
    })

    app.Listen(":3000")
}
```

Pada contoh kode di atas, kita menggunakan method `Get` untuk melakukan routing. Method `Get` digunakan untuk menangani request dengan method `GET`. Pada contoh kode di atas, kita melakukan routing dengan path `/user`. Pada handler, kita menggunakan `c.Query("name")` untuk mendapatkan query parameter `name` dari request.

## Routing dengan Generic Query Parameter

Fiber juga memungkinkan kita untuk melakukan routing dengan generic query parameter. Berikut adalah contoh bagaimana cara melakukan routing dengan generic query parameter pada aplikasi yang dibangun menggunakan Fiber:

```go
package main

import "github.com/gofiber/fiber/v3"

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

    app.Get("/:id", func(c fiber.Ctx) error {
        query := fiber.Query[int](c, "page")
        return c.SendString("Query: " + query)
    })

    app.Listen(":3000")
}
```

Pada contoh kode di atas, kita menggunakan method `Get` untuk melakukan routing. Method `Get` digunakan untuk menangani request dengan method `GET`. Pada contoh kode di atas, kita melakukan routing dengan path `/:id`. Pada handler, kita menggunakan `fiber.Query[int](c, "page")` untuk mendapatkan query parameter `page` dari request.

> **Catatan**: Pada contoh kode di atas, kita menggunakan `fiber.Query[int]` untuk mendapatkan query parameter dengan tipe data `int`. Fiber juga mendukung tipe data `int`, `int8`, `int16`, `int32`, `int64`, `uint`, `uint8`, `uint16`, `uint32`, `uint64`, `float32`, `float64`, `bool`, `string`, dan juga `[]byte`.

## Routing dengan Generic Query Parameter dan Default Value

Fiber juga memungkinkan kita untuk melakukan routing dengan generic query parameter dan default value. Berikut adalah contoh bagaimana cara melakukan routing dengan generic query parameter dan default value pada aplikasi yang dibangun menggunakan Fiber:

```go
package main

import "github.com/gofiber/fiber/v3"

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

    app.Get("/:id", func(c fiber.Ctx) error {
        query := fiber.Query(c, "page", 1)
        return c.SendString("Query: " + query)
    })

    app.Listen(":3000")
}
```

Pada contoh kode di atas, kita menggunakan method `Get` untuk melakukan routing. Method `Get` digunakan untuk menangani request dengan method `GET`. Pada contoh kode di atas, kita melakukan routing dengan path `/:id`. Pada handler, kita menggunakan `fiber.Query(c, "page", 1)` untuk mendapatkan query parameter `page` dari request dengan default value `1`.

> **Catatan**: Pada contoh kode di atas, kita tidak menggunakan tipe data pada `fiber.Query`. Fiber akan secara otomatis mendeteksi tipe data dari default value yang kita berikan jika kita memberikan default value pada `fiber.Query`.

## Kesimpulan

Dalam artikel ini, kita telah mengenal query parameter pada Fiber dan juga telah membahas tentang bagaimana cara melakukan routing dengan query parameter pada aplikasi yang dibangun menggunakan Fiber. Dari sini kita bisa melihat bahwa dibandingkan versi sebelumnya, Fiber v3 memberikan kemudahan dalam penggunaan query parameter karena Fiber v3 mendukung tipe data yang beragam dengan menggunakan generic query parameter. Pada artikel selanjutnya, kita akan membahas tentang bagaimana cara melakukan parsing request body pada aplikasi yang dibangun menggunakan Fiber.
