fix(uri): query binding bug (#3236)

* fix query mapping

* query binding test
This commit is contained in:
illiafox 2024-03-21 16:28:42 +02:00 committed by GitHub
parent 78f4687875
commit 8790d08909
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 25 additions and 2 deletions

View File

@ -12,9 +12,9 @@ func (queryBinding) Name() string {
return "query" return "query"
} }
func (queryBinding) Bind(req *http.Request, obj any) error { func (q queryBinding) Bind(req *http.Request, obj any) error {
values := req.URL.Query() values := req.URL.Query()
if err := mapForm(obj, values); err != nil { if err := mapFormByTag(obj, values, q.Name()); err != nil {
return err return err
} }
return validate(obj) return validate(obj)

23
binding/query_test.go Normal file
View File

@ -0,0 +1,23 @@
package binding
import (
"net/http"
"net/url"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestQueryBinding(t *testing.T) {
var s struct {
Foo string `query:"foo"`
}
request := &http.Request{URL: &url.URL{RawQuery: "foo=BAR"}}
err := queryBinding{}.Bind(request, &s)
require.NoError(t, err)
assert.Equal(t, "BAR", s.Foo)
}