Skip to content

Instantly share code, notes, and snippets.

@zeddee
Created August 10, 2018 17:04
Show Gist options
  • Save zeddee/33bf1edfa4250a48db31716598a36c56 to your computer and use it in GitHub Desktop.
Save zeddee/33bf1edfa4250a48db31716598a36c56 to your computer and use it in GitHub Desktop.
package main
import (
"encoding/json"
"io/ioutil"
"log"
"net/http"
"github.com/gorilla/mux"
)
var members = []Member{Member{"someuser", "[email protected]"}}
// Member ...
type Member struct {
Username string
Email string
}
func main() {
r := mux.NewRouter()
r.HandleFunc("/members", getMembers).Methods("GET")
r.HandleFunc("/members", postMembers).Methods("POST")
port := ":8888"
log.Printf("Serving on port %s\n", port)
err := http.ListenAndServe(port, r)
if err != nil {
log.Fatal(err)
}
}
func getMembers(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
j, err := json.Marshal(members)
if err != nil {
log.Println(err)
}
w.Write(j)
}
func postMembers(w http.ResponseWriter, r *http.Request) {
var m Member
b, err := ioutil.ReadAll(r.Body)
if err != nil {
log.Println(err)
}
json.Unmarshal(b, &m)
members = append(members, m)
j, err := json.Marshal(members)
if err != nil {
log.Println(err)
}
w.Write(j)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment