Pengantar bab ini menjelaskan bagaimana Go Fiber menangani permintaan dan tanggapan, biasanya dengan mengembalikan data JSON untuk pengembangan API saat ini.
Framework Fiber secara utama menggunakan data pengembalian objek konteks Ctx
.
Mengembalikan Data JSON
type SomeStruct struct {
Name string
Age uint8
}
app.Get("/json", func(c *fiber.Ctx) error {
// Membuat struct data untuk respons
data := SomeStruct{
Name: "Grame",
Age: 20,
}
// Mengembalikan menggunakan fungsi json
return c.JSON(data)
// => Content-Type: application/json
// => "{"Name": "Grame", "Age": 20}"
return c.JSON(fiber.Map{
"name": "Grame",
"age": 20,
})
// => Content-Type: application/json
// => "{"name": "Grame", "age": 20}"
})
Mengembalikan Format JSONP
type SomeStruct struct {
name string
age uint8
}
app.Get("/", func(c *fiber.Ctx) error {
// Membuat struct data
data := SomeStruct{
name: "Grame",
age: 20,
}
return c.JSONP(data)
// => callback({"name": "Grame", "age": 20})
return c.JSONP(data, "customFunc")
// => customFunc({"name": "Grame", "age": 20})
})
Mengembalikan Teks
app.Get("/", func(c *fiber.Ctx) error {
// Mengembalikan "Halo, Dunia ?!" sebagai string
return c.SendString("Halo, Dunia ?!")
})
Mengembalikan Kode Status
app.Get("/not-found", func(c *fiber.Ctx) error {
// Mengatur kode status respons
return c.SendStatus(415)
// => 415 "Unsupported Media Type"
c.SendString("Halo, Dunia!")
// Mengatur kode status respons
return c.SendStatus(415)
// => 415 "Halo, Dunia!"
})
Mengembalikan Berkas (Implementasi Unduhan Berkas)
app.Get("/", func(c *fiber.Ctx) error {
return c.Download("./files/report-12345.pdf");
// => Unduh report-12345.pdf
return c.Download("./files/report-12345.pdf", "report.pdf");
// => Unduh report.pdf
})
Mengatur Header Permintaan
app.Get("/", func(c *fiber.Ctx) error {
c.Set("Content-Type", "text/plain")
// => "Content-type: text/plain"
// ...
})
Mengatur Cookie
Definisi Cookie
type Cookie struct {
Name string `json:"name"`
Value string `json:"value"`
Path string `json:"path"`
Domain string `json:"domain"`
MaxAge int `json:"max_age"`
Expires time.Time `json:"expires"`
Secure bool `json:"secure"`
HTTPOnly bool `json:"http_only"`
SameSite string `json:"same_site"`
SessionOnly bool `json:"session_only"`
}
Mengembalikan Cookie
app.Get("/", func(c *fiber.Ctx) error {
// Membuat cookie
cookie := new(fiber.Cookie)
cookie.Name = "john"
cookie.Value = "doe"
cookie.Expires = time.Now().Add(24 * time.Hour)
// Mengatur cookie
c.Cookie(cookie)
// ...
})
Redirect (301 or 302)
Pengalihan default adalah 302
app.Get("/", func(c *fiber.Ctx) error {
return c.Redirect("/foo/bar")
return c.Redirect("../login")
return c.Redirect("http://example.com")
return c.Redirect("http://example.com", 301)
})