Use PUT Method in GoLang Rest API

This project will demonstrate how to Use PUT Method in GoLang Rest API

  • GoLangRESTfulAPI
    • src
      • apis
        • productapi
          • product.api.go
      • entities
        • product.entity.go
      • main.go
package entities

type Product struct {
    Id       string  `json:"id"`
    Name     string  `json:"name"`
    Price    float64 `json:"price"`
    Quantity int     `json:"quantity"`
    Status   bool    `json:"status"`
}
package productapi

import (
    "encoding/json"
    "entities"
    "fmt"
    "net/http"
)

func Update(response http.ResponseWriter, request *http.Request) {
    var product entities.Product
    err := json.NewDecoder(request.Body).Decode(&product)
    if err != nil {
        respondWithError(response, http.StatusBadRequest, err.Error())
    } else {
        fmt.Println("Product Info - Updated")
        fmt.Println("id: ", product.Id)
        fmt.Println("name: ", product.Name)
        fmt.Println("price: ", product.Price)
        fmt.Println("quantity: ", product.Quantity)
        fmt.Println("status: ", product.Status)
        respondWithJSON(response, http.StatusOK, product)
    }
}

func respondWithJSON(response http.ResponseWriter, statusCode int, data interface{}) {
    result, _ := json.Marshal(data)
    response.Header().Set("Content-Type", "application/json")
    response.WriteHeader(statusCode)
    response.Write(result)
}

func respondWithError(response http.ResponseWriter, statusCode int, msg string) {
    respondWithJSON(response, statusCode, map[string]string{"error": msg})
}
package main

import (
    "apis/productapi"
    "fmt"
    "net/http"

    "github.com/gorilla/mux"
)

func main() {
    router := mux.NewRouter()

    router.HandleFunc("/api/product/update", productapi.Update).Methods("PUT")

    err := http.ListenAndServe(":3000", router)
    if err != nil {
        fmt.Println(err)
    }
}

Screenshots