Optimize data processing for the multipart type
This commit is contained in:
parent
3795aecb68
commit
64d8c9d5d0
13
headers.go
13
headers.go
@ -1,10 +1,3 @@
|
|||||||
/*
|
|
||||||
*FileName: header.go
|
|
||||||
*Author: JJXu
|
|
||||||
*CreateTime: 2022/3/1 下午9:44
|
|
||||||
*Description:
|
|
||||||
*/
|
|
||||||
|
|
||||||
package simpleRequest
|
package simpleRequest
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@ -70,6 +63,12 @@ func (s *HeadersConf) Add(header, value string) *HeadersConf {
|
|||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Omit Use to disable automatically generated request headers ,some like Content_Type.
|
||||||
|
func (s *HeadersConf) Omit(keys ...string) *HeadersConf {
|
||||||
|
s.simpleReq.omitHeaderKeys = append(s.simpleReq.omitHeaderKeys, keys...)
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
//一般用不到
|
//一般用不到
|
||||||
//func (s *HeadersConf) Values(keys string) *HeadersConf {
|
//func (s *HeadersConf) Values(keys string) *HeadersConf {
|
||||||
// s.simpleReq.headers.Values(keys)
|
// s.simpleReq.headers.Values(keys)
|
||||||
|
20
parser.go
20
parser.go
@ -92,30 +92,16 @@ func multipartCommonParse(BodyEntry map[string]any) (reader io.Reader, contentTy
|
|||||||
formWriter := multipart.NewWriter(body)
|
formWriter := multipart.NewWriter(body)
|
||||||
for k, sv := range BodyEntry {
|
for k, sv := range BodyEntry {
|
||||||
if strings.Contains(k, FormFilePathKey.string()) {
|
if strings.Contains(k, FormFilePathKey.string()) {
|
||||||
key := k[len(FormFilePathKey):]
|
fieldName := k[len(FormFilePathKey):]
|
||||||
fp := sv.(string)
|
fp := sv.(string)
|
||||||
filename := filepath.Base(fp)
|
filename := filepath.Base(fp)
|
||||||
filePart, _ := formWriter.CreateFormFile(key, filename)
|
//way1
|
||||||
|
filePart, _ := formWriter.CreateFormFile(fieldName, filename)
|
||||||
content, err := os.ReadFile(fp)
|
content, err := os.ReadFile(fp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
_, _ = filePart.Write(content)
|
_, _ = filePart.Write(content)
|
||||||
|
|
||||||
// way 2
|
|
||||||
file, err := os.Open(fp)
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
defer file.Close()
|
|
||||||
fieldName := k[len(FormFilePathKey.string()):]
|
|
||||||
formPart, err := formWriter.CreateFormFile(fieldName, filepath.Base(fp))
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
if _, err = io.Copy(formPart, file); err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
switch multValue := sv.(type) {
|
switch multValue := sv.(type) {
|
||||||
case string:
|
case string:
|
||||||
|
@ -42,11 +42,12 @@ func NewRequest(opts ...OPTION) *SimpleRequest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type SimpleRequest struct {
|
type SimpleRequest struct {
|
||||||
url string
|
url string
|
||||||
queryParams url.Values
|
queryParams url.Values
|
||||||
body io.Reader
|
body io.Reader
|
||||||
headers http.Header
|
headers http.Header
|
||||||
transport *http.Transport
|
omitHeaderKeys []string
|
||||||
|
transport *http.Transport
|
||||||
|
|
||||||
BodyEntryMark EntryMark
|
BodyEntryMark EntryMark
|
||||||
BodyEntries map[string]any
|
BodyEntries map[string]any
|
||||||
@ -182,9 +183,13 @@ func (s *SimpleRequest) LaunchTo(urls, method string) (body []byte, err error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
//headers
|
//headers
|
||||||
for k := range s.headers {
|
//for k := range s.headers {
|
||||||
r.Header[k] = append(r.Header[k], s.headers[k]...)
|
// r.Header[k] = append(r.Header[k], s.headers[k]...)
|
||||||
s.headers.Del(k)
|
// s.headers.Del(k)
|
||||||
|
//}
|
||||||
|
r.Header = s.headers
|
||||||
|
for _, k := range s.omitHeaderKeys {
|
||||||
|
r.Header.Del(k)
|
||||||
}
|
}
|
||||||
//queryParams
|
//queryParams
|
||||||
if r.URL.RawQuery != "" {
|
if r.URL.RawQuery != "" {
|
||||||
|
9
utils.go
9
utils.go
@ -15,3 +15,12 @@ func IsJSONType(ct string) bool {
|
|||||||
func IsXMLType(ct string) bool {
|
func IsXMLType(ct string) bool {
|
||||||
return xmlCheck.MatchString(ct)
|
return xmlCheck.MatchString(ct)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func IsInArray(arr []string, str string) bool {
|
||||||
|
for _, v := range arr {
|
||||||
|
if v == str {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user