Query strings for Go (opinionated!) https://pkg.go.dev/github.com/annybs/go-qs
|
10 mēneši atpakaļ | |
---|---|---|
.github | 10 mēneši atpakaļ | |
.gitignore | 10 mēneši atpakaļ | |
LICENSE.md | 11 mēneši atpakaļ | |
README.md | 10 mēneši atpakaļ | |
filter.go | 1 gadu atpakaļ | |
filter_test.go | 1 gadu atpakaļ | |
go.mod | 10 mēneši atpakaļ | |
join.go | 1 gadu atpakaļ | |
join_test.go | 1 gadu atpakaļ | |
page.go | 1 gadu atpakaļ | |
page_test.go | 1 gadu atpakaļ | |
pagination.go | 1 gadu atpakaļ | |
pagination_test.go | 1 gadu atpakaļ | |
sort.go | 1 gadu atpakaļ | |
sort_test.go | 1 gadu atpakaļ |
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!
This package includes support for:
filter=title eq Bolognese&filter=serves gte 4
join=author&join=ingredient
limit=10&offset=5&page=3
(note: offset
overrides page
)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.
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, above) to see an example response object. You can also enter malformed query strings, which will cause a validation error.
See LICENSE.md