Query param makes it easy to access the query parameters stored in a URL.
go get -u github.com/tomwright/queryparam
type GetUsersRequest struct {
Name string `queryparam:"name"`
Age int `queryparam:"age"`
Gender string `queryparam:"gender"`
}
u, err := url.Parse("https://example.com/users?name=Tom&age=23")
if err != nil {
panic(err)
}
req := &GetUsersRequest{}
err = queryparam.Parse(u, req)
if err != nil {
panic(err)
}
fmt.Println(req.Name) // "Tom"
fmt.Println(req.Age) // 23
fmt.Println(req.Gender) // ""
type GetUsersRequest struct {
Name []string `queryparam:"name"`
}
u, err := url.Parse("https://example.com/users?name=Tom,Jim")
if err != nil {
panic(err)
}
req := &GetUsersRequest{}
err = queryparam.Parse(u, req)
if err != nil {
panic(err)
}
fmt.Println(req.Name) // { "Tom", "Jim" }
If you want to change the delimiter you can do so by changing the value of queryparam.Delimiter
.
The default value is ,
.
var r *http.Request
// Receive r in a http handler...
type GetUsersRequest struct {
Name string `queryparam:"name"`
Age int `queryparam:"age"`
Gender string `queryparam:"gender"`
}
req := &GetUsersRequest{}
err = queryparam.Parse(r.URL, req)
if err != nil {
panic(err)
}
// Do something with req...