This repository has been archived on 2026-09-07 . You can view files and clone it. You cannot open issues or pull requests or push a commit.
b2335194073336f61dcf85c81ae407f4e301e950
This repository is being archived. Point readers at the standard-library or community package that replaces it. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Important
This repository is archived and no longer maintained.
These are thin helpers over
net/httpandencoding/json.Use instead:
- Standard library
net/http+encoding/json.github.com/go-chi/renderfor request decoding and response/error rendering helpers.
Go REST
Some handy functions for developing JSON-based REST APIs. In particular, it simplifies reading HTTP request bodies, writing HTTP response bodies, and handling errors.
Error handling
You can use errors.Is() to ascertain the type of errors thrown by validation functions, but for the most part, this isn't necessary because the write functions already do that.
Example
package main
import (
"errors"
"math/rand"
"net/http"
"github.com/annybs/go/rest"
)
type Handler struct{}
func (*Handler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
n := rand.Intn(3)
if n == 0 {
rest.WriteResponseJSON(w, http.StatusOK, map[string]string{"status": "OK"})
} else if n == 1 {
rest.WriteErrorJSON(w, errors.New("the original error message is added to data.error"))
} else {
rest.WriteErrorJSON(w, rest.ErrNotFound)
}
}
func main() {
http.ListenAndServe("localhost:8000", &Handler{})
}
Open http://localhost:8000 in your browser and refresh a bunch of times to see the different possible responses.
License
See LICENSE.md
Languages
Go
100%