func listBlogs(w http.ResponseWriter, r *http.Request) { jsonapiRuntime := jsonapi.NewRuntime().Instrument("blogs.list") // ...fetch your blogs, filter, offset, limit, etc... // but, for now blogs := testBlogsForList() w.WriteHeader(200) w.Header().Set("Content-Type", "application/vnd.api+json") if err := jsonapiRuntime.MarshalManyPayload(w, blogs); err != nil { http.Error(w, err.Error(), 500) } }
func createBlog(w http.ResponseWriter, r *http.Request) { jsonapiRuntime := jsonapi.NewRuntime().Instrument("blogs.create") blog := new(Blog) if err := jsonapiRuntime.UnmarshalPayload(r.Body, blog); err != nil { http.Error(w, err.Error(), 500) return } // ...do stuff with your blog... w.WriteHeader(201) w.Header().Set("Content-Type", "application/vnd.api+json") if err := jsonapiRuntime.MarshalOnePayload(w, blog); err != nil { http.Error(w, err.Error(), 500) } }
func showBlog(w http.ResponseWriter, r *http.Request) { id := r.FormValue("id") // ...fetch your blog... intID, err := strconv.Atoi(id) if err != nil { http.Error(w, err.Error(), 500) return } jsonapiRuntime := jsonapi.NewRuntime().Instrument("blogs.show") // but, for now blog := testBlogForCreate(intID) w.WriteHeader(200) w.Header().Set("Content-Type", "application/vnd.api+json") if err := jsonapiRuntime.MarshalOnePayload(w, blog); err != nil { http.Error(w, err.Error(), 500) } }