Gofiber
  • Basic backend dengan Gofiber part 1
    • Pengenalan Gofiber
    • Instalasi Gofiber
    • Auto reload dengan air
    • Membaca semua data di struct dengan Gofiber
    • Membaca data spesifik di struct dengan Gofiber
    • Membuat data di struct dengan Gofiber
    • Mengupdate data di struct dengan Gofiber
    • Menghapus data di struct dengan Gofiber
    • Implementasi MVC di Gofiber
  • Basic backend dengan Gofiber part 2
    • Setting database menggunahkan gorm.io di Gofiber
    • Menambahkan query ke database di Gofiber
    • Membuat relasi dengan gorm di Gofiber
    • Membuat validasi dengan validator di Gofiber
    • Membuat CORS di Gofiber
    • Menghandle serangan XSS(Cross-Site Scripting) di Gofiber
    • Mengamankan header HTTP dengan helmet di Gofiber
    • Membuat middleware menggunahkan JWT(JSON Web Token) di Gofiber
    • Menambahkan query search di Gofiber
    • Menambahkan query sort di Gofiber
    • Membuat pagination di Gofiber
    • Membuat refresh token di Gofiber
    • Membuat local upload file di Gofiber
    • Membuat server upload dengan cloudinary di Gofiber
    • Membuat analisis code dengan GolangCI-Lint di Gofiber
Powered by GitBook
On this page
  1. Basic backend dengan Gofiber part 1

Mengupdate data di struct dengan Gofiber

Untuk menambahkan fitur memperbarui produk (update product), kita perlu menambahkan route baru, yaitu /product/:id, yang akan menerima permintaan PUT untuk memperbarui produk berdasarkan ID. Berikut adalah langkah-langkahnya:

  1. Tambahkan Route /product/:id dengan Method PUT: Tambahkan route baru dengan method PUT untuk memperbarui produk berdasarkan ID.

  2. Parsel Permintaan: Di handler route /product/:id, parse data yang dikirim oleh klien untuk memperbarui produk.

  3. Cari Produk yang Akan Diperbarui: Temukan produk dengan ID yang sesuai dalam daftar produk yang ada.

  4. Perbarui Produk: Setelah mendapatkan data produk yang baru dari permintaan klien, perbarui produk yang ada dengan data baru.

  5. Kirim Respon: Kirim respons kepada klien untuk memberitahu bahwa produk telah berhasil diperbarui.

Berikut adalah implementasinya:

package main

import (
    "fmt"
    "strconv"

    "github.com/gofiber/fiber"
)

// Struct Product
type Product struct {
    ID    int     `json:"id"`
    Name  string  `json:"name"`
    Price float64 `json:"price"`
    Stock int     `json:"stock"`
}

// Inisialisasi struct Product dengan data
func initProducts() []Product {
    products := []Product{
        {1, "Product A", 10.99, 100},
        {2, "Product B", 20.50, 50},
        {3, "Product C", 15.75, 75},
    }
    return products
}

func main() {
    // Inisialisasi objek Fiber
    app := fiber.New()

    // Daftar produk
    products := initProducts()

    // Route untuk menampilkan semua produk
    app.Get("/products", func(c *fiber.Ctx) {
        // Kirim data produk dalam format JSON
        c.JSON(products)
    })

    // Route untuk menampilkan detail produk berdasarkan ID
    app.Get("/product/:id", func(c *fiber.Ctx) {
        // Dapatkan ID produk dari parameter route
        id, _ := strconv.Atoi(c.Params("id"))

        // 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
        c.JSON(foundProduct)
    })

    // Route untuk membuat produk baru
    app.Post("/product", func(c *fiber.Ctx) {
        // 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
        }

        // 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
        c.Status(fiber.StatusCreated).JSON(fiber.Map{
            "message": "Product created successfully",
            "product": newProduct,
        })
    })

    // Route untuk memperbarui produk berdasarkan ID
    app.Put("/product/:id", func(c *fiber.Ctx) {
        // Dapatkan ID produk dari parameter route
        id, _ := strconv.Atoi(c.Params("id"))

        // Parse data yang dikirim oleh klien
        var updatedProduct Product
        if err := c.BodyParser(&updatedProduct); err != nil {
            c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
                "message": "Invalid request body",
            })
            return
        }

        // Temukan produk dengan ID yang sesuai
        var foundIndex int = -1
        for i, p := range products {
            if p.ID == id {
                foundIndex = i
                break
            }
        }

        // Jika produk ditemukan, perbarui produk
        if foundIndex != -1 {
            products[foundIndex] = updatedProduct
            c.Status(fiber.StatusOK).JSON(fiber.Map{
                "message": fmt.Sprintf("Product with ID %d updated successfully", id),
                "product": updatedProduct,
            })
        } else {
            c.Status(fiber.StatusNotFound).JSON(fiber.Map{
                "message": fmt.Sprintf("Product with ID %d not found", id),
            })
        }
    })

    // Jalankan server di port tertentu
    app.Listen(3000)
}

coba menggunahkan postman dengan method put dengan endpoint

http://localhost:3000/product/1

isi dari request bodynya

{
    "id":1,  
    "name":"Product AB", 
    "price": 10.99, 
    "stock":100
}

Dalam kode di atas, kita menambahkan route /product/:id dengan method PUT untuk memperbarui produk berdasarkan ID. Di dalam handler untuk route tersebut, kita parse data yang dikirim oleh klien untuk memperbarui produk, kemudian temukan produk dengan ID yang sesuai dalam daftar produk yang ada, dan perbarui produk tersebut. Setelah itu, kita kirim respons kepada klien untuk memberitahu bahwa produk telah berhasil diperbarui.

PreviousMembuat data di struct dengan GofiberNextMenghapus data di struct dengan Gofiber

Last updated 1 year ago