Membuat data di struct dengan Gofiber
Untuk menambahkan fitur membuat produk baru (create product), kita perlu menambahkan route baru, yaitu /product
, yang akan menerima permintaan POST untuk membuat produk baru. Berikut adalah langkah-langkahnya:
Tambahkan Route
/product
: Tambahkan route baru dengan method POST untuk membuat produk baru.Parsel Permintaan: Di handler route
/product
, parse data yang dikirim oleh klien untuk membuat produk baru.Tambahkan Produk Baru ke Daftar Produk: Setelah mendapatkan data produk dari permintaan klien, tambahkan produk baru tersebut ke dalam daftar produk yang ada.
Kirim Respon: Kirim respons kepada klien untuk memberitahu bahwa produk baru telah berhasil dibuat.
Berikut adalah implementasinya:
package main
import (
"strconv"
"github.com/gofiber/fiber/v2"
)
// Struct Product
type Product struct {
ID int `json:"id"`
Name string `json:"name"`
Price float64 `json:"price"`
Stock int `json:"stock"`
}
func main() {
// Inisialisasi objek Fiber
app := fiber.New()
products := []Product{
{1, "Product A", 10.99, 100},
{2, "Product B", 20.50, 50},
{3, "Product C", 15.75, 75},
}
// Route untuk menampilkan data produk
app.Get("/products", func(c *fiber.Ctx) error {
// Panggil fungsi initProducts untuk mendapatkan data produk
// products := initProducts()
// Kirim data produk dalam format JSON
return c.JSON(products)
})
// Route untuk menampilkan detail produk berdasarkan ID
app.Get("/product/:id", func(c *fiber.Ctx) error {
// Dapatkan ID produk dari parameter route
paramId := c.Params("id")
id, _ := strconv.Atoi(paramId)
// Panggil fungsi initProducts untuk mendapatkan data produk
// products := initProducts()
// Temukan produk dengan ID yang sesuai
var foundProduct Product
for _, p := range products {
if p.ID == id {
foundProduct = p
break
}
}
// Kirim detail produk dalam format JSON
return c.JSON(foundProduct)
})
// Route untuk membuat produk baru
app.Post("/product", func(c *fiber.Ctx) error {
// Parse data yang dikirim oleh klien
var newProduct Product
if err := c.BodyParser(&newProduct); err != nil {
c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
"message": "Invalid request body",
})
return err
}
// Generate ID untuk produk baru (misalnya, ID terakhir + 1)
newProduct.ID = len(products) + 1
// Tambahkan produk baru ke daftar produk
products = append(products, newProduct)
// Kirim respons
return c.Status(fiber.StatusCreated).JSON(fiber.Map{
"message": "Product created successfully",
"product": newProduct,
})
})
// Jalankan server di port tertentu
app.Listen(":3000")
}
coba menggunahkan postman dengan method post dengan endpoint
http://localhost:3000/product
isi dari request bodynya
{
"name":"Product D",
"price": 10.99,
"stock":100
}
Dalam kode di atas, kita menambahkan route /product
dengan method POST untuk membuat produk baru. Di dalam handler untuk route tersebut, kita parse data yang dikirim oleh klien untuk membuat produk baru, kemudian menambahkannya ke dalam daftar produk yang ada. Setelah itu, kita kirim respons kepada klien untuk memberitahu bahwa produk baru telah berhasil dibuat.
Last updated