From a101d60df85cc2d142dbf61e5012c5cf1635d0b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=96=8C?= <259278618@qq.com> Date: Tue, 13 Jan 2026 11:08:17 +0800 Subject: [PATCH] =?UTF-8?q?ragflow=20http=E8=AF=B7=E6=B1=82=20header?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- http/http.go | 22 +++++++++++++++------- ragflow/client.go | 45 ++++++++++----------------------------------- 2 files changed, 25 insertions(+), 42 deletions(-) diff --git a/http/http.go b/http/http.go index 1d0edad..8f6f8af 100644 --- a/http/http.go +++ b/http/http.go @@ -58,19 +58,27 @@ func doRequest(ctx context.Context, method string, url string, headers map[strin if err != nil { return } - Httpclient.SetHeader("Authorization", g.RequestFromCtx(ctx).GetHeader("Authorization")) - Httpclient.SetHeaderMap(headers) - response, err := Httpclient.DoRequest(ctx, method, url, data) + client := Httpclient + if len(data) > 0 { + client = Httpclient.Clone() + } + if len(headers) > 0 { + client.SetHeaderMap(headers) + } else { + client.SetHeader("Authorization", g.RequestFromCtx(ctx).GetHeader("Authorization")) + } + response, err := client.DoRequest(ctx, method, url, data...) if err != nil { return } defer response.Close() result := response.ReadAll() resultStrut := &ghttp.DefaultHandlerResponse{} - if err = gconv.Struct(result, &resultStrut); err != nil { - err = errors.New(resultStrut.Message) - } else if resultStrut.Code == 200 || resultStrut.Code == 0 { + gconv.Struct(result, &resultStrut) + if resultStrut.Code == 200 || resultStrut.Code == 0 { gconv.Struct(resultStrut.Data, target) + } else { + err = errors.New(resultStrut.Message) } return } @@ -87,6 +95,6 @@ func Put(ctx context.Context, url string, headers map[string]string, target any, return } func Delete(ctx context.Context, url string, headers map[string]string, target any, data ...any) (err error) { - err = doRequest(ctx, http.MethodPut, url, headers, target, data) + err = doRequest(ctx, http.MethodDelete, url, headers, target, data) return } diff --git a/ragflow/client.go b/ragflow/client.go index 41c7681..91601ad 100644 --- a/ragflow/client.go +++ b/ragflow/client.go @@ -7,10 +7,9 @@ import ( "sync" "sync/atomic" - "github.com/gogf/gf/v2/encoding/gjson" + "gitee.com/red-future---jilin-g/common/http" "github.com/gogf/gf/v2/errors/gerror" "github.com/gogf/gf/v2/frame/g" - "github.com/gogf/gf/v2/net/gclient" ) var ( @@ -150,50 +149,26 @@ func (c *Client) request(ctx context.Context, method, path string, body interfac } // 创建新的HTTP客户端实例(避免共享状态) - client := g.Client() - client.SetHeader("Authorization", "Bearer "+c.APIKey) - client.SetHeader("Content-Type", "application/json") - - var response *gclient.Response + var headers = make(map[string]string) + headers["Authorization"] = "Bearer " + c.APIKey + headers["Content-Type"] = "application/json" switch method { case "GET": - response, err = client.Get(ctx, fullURL, body) + err = http.Get(ctx, fullURL, headers, result, body) case "POST": - response, err = client.Post(ctx, fullURL, body) + err = http.Post(ctx, fullURL, headers, result, body) case "PUT": - response, err = client.Put(ctx, fullURL, body) + err = http.Put(ctx, fullURL, headers, result, body) case "DELETE": - // DELETE请求需要明确使用ContentJson发送body + if body != nil { - response, err = client.ContentJson().Delete(ctx, fullURL, body) + err = http.Delete(ctx, fullURL, headers, result, body) } else { - response, err = client.Delete(ctx, fullURL) + err = http.Delete(ctx, fullURL, headers, result) } default: return gerror.Newf("unsupported method: %s", method) } - - if err != nil { - g.Log().Errorf(ctx, "RAGFlow HTTP请求失败: %v", err) - return gerror.Wrapf(err, "HTTP request to RAGFlow failed") - } - - if response == nil { - return gerror.New("HTTP response is nil") - } - - defer response.Close() - - // 读取响应体 - respBytes := response.ReadAll() - g.Log().Infof(ctx, "RAGFlow响应: %s", string(respBytes)) - - // 解析JSON到result - if err = gjson.DecodeTo(respBytes, result); err != nil { - g.Log().Errorf(ctx, "RAGFlow响应解析失败: %v, 原始响应: %s", err, string(respBytes)) - return gerror.Wrapf(err, "failed to decode RAGFlow response") - } - return }