Răsfoiți Sursa

add readme for each package

Aneurin Barker Snook 11 luni în urmă
părinte
comite
b5d4401dcc
1 a modificat fișierele cu 50 adăugiri și 0 ștergeri
  1. 50 0
      README.md

+ 50 - 0
README.md

@@ -0,0 +1,50 @@
+# Go Query String
+
+An opinionated suite of functions to help read common query strings into useful objects, mainly focused on data querying.
+
+This particular package is primarily for the author's own use; if you want to pattern your query strings differently, this library is not for you!
+
+## Features
+
+This package includes support for:
+
+- Filters `filter=title eq Bolognese&filter=serves gte 4`
+- Joins `join=author&join=ingredient`
+- Pagination `limit=10&offset=5&page=3` (note: `offset` overrides `page`)
+- Sorting `sort=title asc&sort=serves asc`
+
+You can read these individually or use the `ReadPage()` function to retrieve a convenient Page object that's easy to pass along to your querying code.
+
+## Example
+
+```go
+package main
+
+import (
+	"net/http"
+
+	"github.com/annybs/go/qs"
+	"github.com/annybs/go/rest"
+)
+
+type Handler struct{}
+
+func (*Handler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
+	page, err := qs.ReadPage(req.URL.Query(), nil)
+	if err != nil {
+		rest.WriteErrorJSON(w, err)
+	} else {
+		rest.WriteResponseJSON(w, http.StatusOK, page)
+	}
+}
+
+func main() {
+	http.ListenAndServe("localhost:8000", &Handler{})
+}
+```
+
+Open <http://localhost:8000> in your browser and try different query strings (per [Features](#features), above) to see an example response object. You can also enter malformed query strings, which will cause a validation error.
+
+## License
+
+See [LICENSE.md](../LICENSE.md)