Compare commits

...

4 Commits

Author SHA1 Message Date
2bd8cf162f fix: 修复请求体为nil时读取报错的问题 2024-09-14 14:02:33 +08:00
8c5228668f update md 2024-01-15 10:26:22 +08:00
1549e4142c udpate md 2024-01-15 10:20:28 +08:00
7fe8681468 upate 2024-01-12 16:17:05 +08:00
2 changed files with 20 additions and 15 deletions

View File

@ -1,10 +1,11 @@
_# simpleRequest # simpleRequest
## 1. 说明 ## 1. 说明
[simpleRequest](www.github.com/dorlolo/simpleRequest) 是一款面向对象开发的http请求库。他是基于Go原生http库。开发这个模块的主要目的是为了更快的对接第三方api接口。 [simpleRequest](www.github.com/dorlolo/simpleRequest) 是一款面向对象的http请求库它在Go原生的http库为基础做了一定的封装使开发更加便捷。
它具备以下特点:
- 极简化的代码,大大提高了代码编写速度。 > [simpleRequest](www.github.com/dorlolo/simpleRequest) 具备以下特点:
- 更易于理解和使用,减少了资料查询的时间。 - 没有在代码层面遵循restful规范适合对接不符合规范的接口;
- 更适合对接一些不遵循restful规范的接口。 - 轻量级、不需要繁琐的配置;
- 易于理解和使用,减少了资料查询的时间。
这是它的一个示例: 这是它的一个示例:
```go ```go
@ -61,12 +62,13 @@ r.Headers().Set("token", "d+jfdji*D%1=").Set("Content-Type", "application/json")
``` ```
#### 2.4.4 添加多值 #### 2.4.4 添加多值
对单个key添加多只不要使用`.set`,因为原先的值会被覆盖
```go ```go
// 对相同key的值进行覆盖请使用Set方法
r.Headers().Set("Accept", "text/html") r.Headers().Set("Accept", "text/html")
// 对相同key的值进行追加请使用Add方法
r.Headers().Add("Accept","application/xhtml+xml") r.Headers().Add("Accept","application/xhtml+xml")
r.Headers().Add("Accept","application/xml;q=0.8") r.Headers().Add("Accept","application/xml;q=0.8")
r.Headers().Add("Accept","image/webp")
r.Headers().Add("Accept","*/*;q=0.8") r.Headers().Add("Accept","*/*;q=0.8")
``` ```
@ -241,7 +243,7 @@ func FileForwardUseBytesBody(c *gin.Context){
writer = multipart.NewWriter(body) writer = multipart.NewWriter(body)
) )
// add file object // add file object
filePart, _ := i.writer.CreateFormFile("file", file.Filename) filePart, _ := writer.CreateFormFile("file", file.Filename)
src, err := file.Open() src, err := file.Open()
if err != nil { if err != nil {
fmt.Println( err.Error()) fmt.Println( err.Error())
@ -325,4 +327,4 @@ responseContext:=r.Response
``` ```
## 3. 使用示例 ## 3. 使用示例
[simpleRequest_test.go](excample/simpleRequest_test.go)_ [simpleRequest_test.go](excample/simpleRequest_test.go)

View File

@ -54,7 +54,7 @@ type SimpleRequest struct {
BodyEntries map[string]any // 输入的body中的内容 BodyEntries map[string]any // 输入的body中的内容
bodyEntryParsers map[string]IBodyEntryParser // 用于将BodyEntries中的内容解析后传入request body中 bodyEntryParsers map[string]IBodyEntryParser // 用于将BodyEntries中的内容解析后传入request body中
disableDefaultContentType bool // 禁用默认的ContentType disableDefaultContentType bool // 禁用默认的ContentType
disableCopyRequestBody bool // 禁用默认的ContentType在进行http请求后SimpleRequest.Request.Body中内容会无法读取 disableCopyRequestBody bool // 禁用复制请求体在进行http请求后SimpleRequest.Request.Body中内容会无法读取,但是会提高性能
timeout time.Duration timeout time.Duration
@ -173,12 +173,15 @@ func (s *SimpleRequest) GET(urls string) (body []byte, err error) {
// 通用的请求方法 // 通用的请求方法
func (s *SimpleRequest) LaunchTo(urls, method string) (body []byte, err error) { func (s *SimpleRequest) LaunchTo(urls, method string) (body []byte, err error) {
var r *http.Request
// body // body
s.initBody() s.initBody()
var r *http.Request var copBody []byte
copBody, err := io.ReadAll(s.body) if s.body != nil {
if err != nil { copBody, err = io.ReadAll(s.body)
return if err != nil {
return
}
} }
if !s.disableCopyRequestBody { if !s.disableCopyRequestBody {
// 使r.body在请求后仍旧可读,便于使用者对请求过程进行分析 // 使r.body在请求后仍旧可读,便于使用者对请求过程进行分析