init for restful explorer service

pull/130/head
Minh Doan 6 years ago
parent 9ad620885e
commit f862eaf6a9
  1. 88
      services/explorer/rest.go

@ -0,0 +1,88 @@
package main
import (
"encoding/json"
"log"
"net/http"
"github.com/gorilla/mux"
)
// ExplorerService is the struct for explorer service.
type ExplorerService struct {
}
// Init is to do init for ExplorerService.
func (es *ExplorerService) Init() {
}
// ParentHash *common.Hash `json:"parentHash" gencodec:"required"`
// Coinbase *common.Address `json:"miner" gencodec:"required"`
// Root *common.Hash `json:"stateRoot" gencodec:"required"`
// Person is fake struct for testing.
type Person struct {
ID string `json:"id,omitempty"`
Firstname string `json:"firstname,omitempty"`
Lastname string `json:"lastname,omitempty"`
Address *Address `json:"address,omitempty"`
}
// Address is fake struct for testing.
type Address struct {
City string `json:"city,omitempty"`
State string `json:"state,omitempty"`
}
var people []Person
// GetPersonEndpoint is the specific person end point.
func GetPersonEndpoint(w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r)
for _, item := range people {
if item.ID == params["id"] {
json.NewEncoder(w).Encode(item)
return
}
}
json.NewEncoder(w).Encode(&Person{})
}
// GetPeopleEndpoint is the people end point.
func GetPeopleEndpoint(w http.ResponseWriter, r *http.Request) {
json.NewEncoder(w).Encode(people)
}
// CreatePersonEndpoint is post people/{id} end point.
func CreatePersonEndpoint(w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r)
var person Person
_ = json.NewDecoder(r.Body).Decode(&person)
person.ID = params["id"]
people = append(people, person)
json.NewEncoder(w).Encode(people)
}
// DeletePersonEndpoint is delete people/{id} end point.
func DeletePersonEndpoint(w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r)
for index, item := range people {
if item.ID == params["id"] {
people = append(people[:index], people[index+1:]...)
break
}
json.NewEncoder(w).Encode(people)
}
}
func main() {
router := mux.NewRouter()
people = append(people, Person{ID: "1", Firstname: "John", Lastname: "Doe", Address: &Address{City: "City X", State: "State X"}})
people = append(people, Person{ID: "2", Firstname: "Koko", Lastname: "Doe", Address: &Address{City: "City Z", State: "State Y"}})
router.HandleFunc("/people", GetPeopleEndpoint).Methods("GET")
router.HandleFunc("/people/{id}", GetPersonEndpoint).Methods("GET")
router.HandleFunc("/people/{id}", CreatePersonEndpoint).Methods("POST")
router.HandleFunc("/people/{id}", DeletePersonEndpoint).Methods("DELETE")
log.Fatal(http.ListenAndServe(":8000", router))
}
Loading…
Cancel
Save