REST API helpers for Go https://pkg.go.dev/github.com/annybs/go-rest

Aneurin Barker Snook 480a5c816d add readme for each package 11 ay önce
README.md 480a5c816d add readme for each package 11 ay önce
body.go 33eba7de84 wrap request read error as bad request 1 yıl önce
body_test.go a9ef6b837b add request body read tests 1 yıl önce
error.go 60fc78574e fix staticcheck suggestions 1 yıl önce
error_test.go e3f3b16b84 add validation error type, fix tests, add number tests 1 yıl önce
go.mod 5c0b808dd7 migrate from recipeer org to annybs 1 yıl önce

README.md

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