mirror of https://github.com/gin-gonic/gin.git
fix(uri): query binding bug (#3236)
* fix query mapping * query binding test
This commit is contained in:
parent
78f4687875
commit
8790d08909
|
@ -12,9 +12,9 @@ func (queryBinding) Name() string {
|
|||
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()
|
||||
if err := mapForm(obj, values); err != nil {
|
||||
if err := mapFormByTag(obj, values, q.Name()); err != nil {
|
||||
return err
|
||||
}
|
||||
return validate(obj)
|
||||
|
|
|
@ -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)
|
||||
}
|
Loading…
Reference in New Issue