|
@@ -0,0 +1,44 @@
|
|
|
+# 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
|
|
|
+
|
|
|
+```go
|
|
|
+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](../LICENSE.md)
|