Browse Source

http client 添加接口

yjp 3 months ago
parent
commit
e4c068acfb
1 changed files with 26 additions and 2 deletions
  1. 26 2
      http_client/request.go

+ 26 - 2
http_client/request.go

@@ -2,8 +2,10 @@ package http_client
 
 import (
 	"encoding/json"
+	"git.sxidc.com/go-tools/utils/strutils"
 	"github.com/go-resty/resty/v2"
 	"github.com/pkg/errors"
+	"io"
 )
 
 type RequestOption func(request *Request)
@@ -32,6 +34,12 @@ func WithRequestFiles(files map[string]string) RequestOption {
 	}
 }
 
+func WithRequestFileReader(paramName string, fileName string, reader io.Reader) RequestOption {
+	return func(request *Request) {
+		request.SetFileReader(paramName, fileName, reader)
+	}
+}
+
 func WithRequestFormData(data map[string]string) RequestOption {
 	return func(request *Request) {
 		request.SetFormData(data)
@@ -74,6 +82,14 @@ func (request *Request) SetFiles(files map[string]string) {
 	request.request.SetFiles(files)
 }
 
+func (request *Request) SetFileReader(paramName string, fileName string, reader io.Reader) {
+	if strutils.IsStringEmpty(paramName) || strutils.IsStringEmpty(fileName) || reader == nil {
+		return
+	}
+
+	request.request.SetFileReader(paramName, fileName, reader)
+}
+
 func (request *Request) SetFormData(data map[string]string) {
 	if data == nil || len(data) == 0 {
 		return
@@ -89,7 +105,11 @@ func (request *Request) Post(url string, body any, opts ...RequestOption) (*Resp
 
 	restyRequest := request.request
 
-	resp, err := restyRequest.SetBody(body).Post(url)
+	if body != nil {
+		restyRequest = restyRequest.SetBody(body)
+	}
+
+	resp, err := restyRequest.Post(url)
 	if err != nil {
 		return nil, err
 	}
@@ -127,7 +147,11 @@ func (request *Request) Put(url string, body any, opts ...RequestOption) (*Respo
 
 	restyRequest := request.request
 
-	resp, err := restyRequest.SetBody(body).Put(url)
+	if body != nil {
+		restyRequest = restyRequest.SetBody(body)
+	}
+
+	resp, err := restyRequest.Put(url)
 	if err != nil {
 		return nil, err
 	}