From af1042d743220769d879f61b021c9418c73da00a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=85=89=E6=98=A5?= Date: Wed, 4 May 2022 17:56:59 +0800 Subject: [PATCH] update headers --- header.go | 28 ++++++++++++++++++++++++++++ http.go | 13 ++++++------- params.go | 1 + 3 files changed, 35 insertions(+), 7 deletions(-) diff --git a/header.go b/header.go index ddde4c1..7e6aa78 100644 --- a/header.go +++ b/header.go @@ -4,23 +4,37 @@ import ( "net/url" ) +// Headers 头部信息 type Headers map[string]string +// NewHeaders 新建头部信息 func NewHeaders() Headers { P := make(Headers) return P } +// NewNewHeadersWith 头部信息使用 +func NewNewHeadersWith(headers ...Headers) Headers { + p := make(Headers) + for _, v := range headers { + p.SetHeaders(v) + } + return p +} + +// Set 设置头部信息 func (p Headers) Set(key, value string) { p[key] = value } +// SetHeaders 批量设置头部信息 func (p Headers) SetHeaders(headers Headers) { for key, value := range headers { p[key] = value } } +// GetQuery 获取头部信息 func (p Headers) GetQuery() string { u := url.Values{} for k, v := range p { @@ -28,3 +42,17 @@ func (p Headers) GetQuery() string { } return u.Encode() } + +// DeepCopy 深度复制 +func (p *Headers) DeepCopy() map[string]string { + targetMap := make(map[string]string) + + // 从原始复制到目标 + for key, value := range *p { + targetMap[key] = value + } + + // 重新申请一个新的map + *p = map[string]string{} + return targetMap +} diff --git a/http.go b/http.go index 7158a0c..a8dc57a 100644 --- a/http.go +++ b/http.go @@ -15,7 +15,7 @@ import ( "time" ) -const Version = "1.0.15" +const Version = "1.0.16" // Response 返回内容 type Response struct { @@ -172,6 +172,7 @@ func request(app *App) (httpResponse Response, err error) { httpResponse.RequestUri = app.httpUri httpResponse.RequestMethod = app.httpMethod httpResponse.RequestParams = app.httpParams.DeepCopy() + httpResponse.RequestHeader = app.httpHeader.DeepCopy() // 判断网址 if httpResponse.RequestUri == "" { @@ -201,7 +202,7 @@ func request(app *App) (httpResponse Response, err error) { var reqBody io.Reader if httpResponse.RequestMethod == http.MethodPost && app.httpContentType == httpParamsModeJson { - app.httpHeader.Set("Content-Type", "application/json") + httpResponse.RequestHeader.Set("Content-Type", "application/json") jsonStr, err := json.Marshal(httpResponse.RequestParams) if err != nil { app.Error = errors.New(fmt.Sprintf("解析出错 %s", err)) @@ -214,7 +215,7 @@ func request(app *App) (httpResponse Response, err error) { if httpResponse.RequestMethod == http.MethodPost && app.httpContentType == httpParamsModeForm { // 携带 form 参数 form := url.Values{} - app.httpHeader.Set("Content-Type", "application/x-www-form-urlencoded") + httpResponse.RequestHeader.Set("Content-Type", "application/x-www-form-urlencoded") if len(httpResponse.RequestParams) > 0 { for k, v := range httpResponse.RequestParams { form.Add(k, GetParamsString(v)) @@ -251,13 +252,11 @@ func request(app *App) (httpResponse Response, err error) { } // 设置请求头 - if len(app.httpHeader) > 0 { - for key, value := range app.httpHeader { + if len(httpResponse.RequestHeader) > 0 { + for key, value := range httpResponse.RequestHeader { req.Header.Set(key, value) } } - // 赋值 - httpResponse.RequestHeader = app.httpHeader // 发送请求 resp, err := client.Do(req) diff --git a/params.go b/params.go index caf56c1..9339d7e 100644 --- a/params.go +++ b/params.go @@ -6,6 +6,7 @@ import ( "log" ) +// Params 参数 type Params map[string]interface{} // NewParams 新建参数