diff --git a/myhttp/httpc/httpclient.go b/myhttp/httpc/httpclient.go index 65fc6bd..275c29a 100644 --- a/myhttp/httpc/httpclient.go +++ b/myhttp/httpc/httpclient.go @@ -60,7 +60,8 @@ type Request struct { ctx context.Context header http.Header body any - query map[string][]string + mapQuery map[string]string + urlQuery url.Values httpClient *HttpClient contentType string } @@ -123,8 +124,9 @@ func (h *HttpClient) NewRequest(ctx context.Context) *Request { r := &Request{ ctx: ctx, header: nil, - query: nil, + mapQuery: nil, httpClient: h, + urlQuery: url.Values{}, } return r } @@ -151,21 +153,26 @@ func (r *Request) SetBody(body any) *Request { return r } -func (r *Request) SetQueryParam(k string, v []string) *Request { - if r.query == nil { - r.query = make(map[string][]string) +func (r *Request) SetQueryParam(k string, v string) *Request { + if r.mapQuery == nil { + r.mapQuery = make(map[string]string) } - r.query[k] = v + r.mapQuery[k] = v return r } -func (r *Request) SetQueryParams(params map[string][]string) *Request { +func (r *Request) SetQueryParams(params map[string]string) *Request { for k, v := range params { r.SetQueryParam(k, v) } return r } +func (r *Request) SetUrlQueryParam(k string, v string) *Request { + r.urlQuery.Add(k, v) + return r +} + func (r *Request) SetHeader(k, v string) *Request { if r.header == nil { r.header = http.Header{} @@ -219,10 +226,11 @@ func (r *Request) Do(method, rawUrl string) (*Response, error) { query := req.URL.Query() - for k, v := range r.query { - for _, vv := range v { - query.Add(k, vv) - } + for k, v := range r.mapQuery { + query.Add(k, v) + } + for k, v := range r.urlQuery { + query[k] = v } req.URL.RawQuery = query.Encode()