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)
})