func (lac ListAPIController) ServeHTTP(w http.ResponseWriter, r *http.Request) { l := datastore.List{Id: r.URL.Path} if r.Method == "POST" { bytes, err := ioutil.ReadAll(r.Body) if err != nil { http.Error(w, "Error reading request body", 500) return } var newList []string if err := json.Unmarshal(bytes, &newList); err != nil { http.Error(w, "Error parsing request body JSON", 400) log.Println(string(bytes)) return } if err := l.Set(newList); err != nil { http.Error(w, "Error saving list", 500) return } } items, err := l.Get() if err != nil { http.Error(w, "Error getting list", 500) return } bytes, err := json.Marshal(items) if err != nil { http.Error(w, "Error rendering list", 500) return } w.Header().Add("Content-Type", "application/json") fmt.Fprintln(w, string(bytes)) }