mirror of
https://github.com/guonaihong/gout
synced 2025-12-24 12:58:00 +08:00
37 lines
784 B
Go
37 lines
784 B
Go
package encode
|
|
|
|
import (
|
|
"net/http"
|
|
"net/url"
|
|
"reflect"
|
|
)
|
|
|
|
var _ Adder = (*QueryEncode)(nil)
|
|
|
|
// QueryEncode URL query encoder structure
|
|
type QueryEncode struct {
|
|
values url.Values
|
|
r *http.Request
|
|
}
|
|
|
|
// NewQueryEncode create a new URL query encoder
|
|
func NewQueryEncode(req *http.Request) *QueryEncode {
|
|
return &QueryEncode{values: make(url.Values)}
|
|
}
|
|
|
|
// Add Encoder core function, used to set each key / value into the http URL query
|
|
func (q *QueryEncode) Add(key string, v reflect.Value, sf reflect.StructField) error {
|
|
q.values.Add(key, valToStr(v, sf))
|
|
return nil
|
|
}
|
|
|
|
// End URL query structured data into strings
|
|
func (q *QueryEncode) End() string {
|
|
return q.values.Encode()
|
|
}
|
|
|
|
// Name URL query Encoder name
|
|
func (q *QueryEncode) Name() string {
|
|
return "query"
|
|
}
|