diff --git a/render/json.go b/render/json.go index f28cd1f8..82a2c5d7 100644 --- a/render/json.go +++ b/render/json.go @@ -13,18 +13,29 @@ type ( JSON struct { Data interface{} } + + JSONAPI struct { + Data interface{} + } IndentedJSON struct { Data interface{} } ) -var jsonContentType = []string{"application/json; charset=utf-8"} +var ( + jsonContentType = []string{"application/json; charset=utf-8"} + jsonAPIContentType = []string{"application/vnd.api+json"} +) func (r JSON) Render(w http.ResponseWriter) error { return WriteJSON(w, r.Data) } +func (r JSONAPI) Render(w http.ResponseWriter) error { + return WriteJSONAPI(w, r.Data) +} + func (r IndentedJSON) Render(w http.ResponseWriter) error { w.Header()["Content-Type"] = jsonContentType jsonBytes, err := json.MarshalIndent(r.Data, "", " ") @@ -39,3 +50,8 @@ func WriteJSON(w http.ResponseWriter, obj interface{}) error { w.Header()["Content-Type"] = jsonContentType return json.NewEncoder(w).Encode(obj) } + +func WriteJSONAPI(w http.ResponseWrite, obj interface{}) error { + w.Header()["Content-Type"] = jsonAPIContentType + return json.NewEncode(w).Encode(obj) +}