Install Libraries
Make sure Git is installed on your machine and in your system’s PATH. Install the packages to your $GOPATH with the go tool from shell:
$ go get -u github.com/gorilla/mux
$ go get -u github.com/gorilla/handlers
Create Entity
Create new folder named src. In src folder, create new folder named entities. In entities folder, create new file named product.entity.go as below:
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"`
}
Web APIs
In src folder, create new folder named apis. In this folder, create new web api as below:
Product API
In apis folder, create new folder named productapi. In productapi folder, create new go file named product.api.go as below:
package productapi
import (
"encoding/json"
"entities"
"net/http"
)
func FindAll(response http.ResponseWriter, request *http.Request) {
products := []entities.Product{
entities.Product{
Id: "p01",
Name: "name 1",
Price: 4.5,
Quantity: 10,
Status: true,
},
entities.Product{
Id: "p02",
Name: "name 2",
Price: 11,
Quantity: 2,
Status: false,
},
entities.Product{
Id: "p03",
Name: "name 3",
Price: 16,
Quantity: 22,
Status: true,
},
}
respondWithJSON(response, http.StatusOK, products)
}
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)
}
Structure of Project
Run Application
In src folder, create new file named main.go as below and use go run main.go command to run program:
package main
import (
"apis/productapi"
"fmt"
"net/http"
"github.com/gorilla/mux"
)
func main() {
router := mux.NewRouter()
router.HandleFunc("/api/product/findall", productapi.FindAll).Methods("GET")
err := http.ListenAndServe(":3000", router)
if err != nil {
fmt.Println(err)
}
}
Test Web API
Use PostMan Tool test web api with url: http://localhost:3000/api/product/findall