HTTP 请求转发代理 (forwardProxy)

功能描述

此 API 端点 POST /api/network/forwardProxy 提供了一个通用的 HTTP 请求转发代理功能。

它允许客户端(如插件)通过思源笔记后端向任意指定的 URL 发送 HTTP 请求(GET, POST, PUT, DELETE 等),并获取完整的响应(状态码、响应头、响应体)。

主要用途包括:

请求参数

请求体必须是 JSON 格式,包含以下参数:

请求示例:


{
  "url": "https://api.example.com/data",
  "method": "GET",
  "timeout": 5000,
  "headers": [
    {"Authorization": "Bearer your_api_key"}
  ]
}
            

{
  "url": "https://api.example.com/submit",
  "method": "POST",
  "headers": [
      {"X-Custom-ID": "12345"}
  ],
  "contentType": "application/json", // 明确指定 JSON
  "payload": {
      "name": "test",
      "value": 100
  },
  "payloadEncoding": "json" // 对应 payload 是 JSON 对象
}
            

{
  "url": "https://api.example.com/binary",
  "method": "POST",
  "contentType": "application/octet-stream",
  "payload": "SGVsbG8gV29ybGQ=", // "Hello World" 的 Base64 编码
  "payloadEncoding": "base64"
}
            

响应结果

无论目标服务器返回什么,此 API 本身成功的请求将返回一个 JSON 对象,code 为 0。目标服务器的实际响应包含在 data 字段中。


{
  "code": 0,
  "msg": "",
  "data": {
    "StatusCode": 200, // 目标服务器返回的 HTTP 状态码
    "Headers": {       // 目标服务器返回的响应头
      "Content-Type": ["application/json"],
      "Date": ["Wed, 21 Feb 2024 10:00:00 GMT"],
      // ... 其他响应头
    },
    "Body": { ... } // 目标服务器返回的响应体 (已自动解码或处理)
                      // - 如果响应是 JSON, 这里是解码后的 JSON 对象/数组
                      // - 如果响应是文本 (text/plain, text/html), 这里是文本字符串
                      // - 如果是其他二进制类型, 这里可能是 Base64 编码的字符串
                      // - 如果请求失败或无响应体,可能为 null
    "BodyContentType": "application/json", // 目标服务器响应的 Content-Type
    "BodyEncoding": "json" // Siyuan 尝试解析 Body 的方式 ('json', 'text', 'base64-std') 
  }
}
            

如果代理请求过程中发生错误(例如 DNS 解析失败、连接超时、目标 URL 无效等),code 会是 -1 或其他非零值,并包含错误信息在 msg 字段中,此时 data 可能为 `null`。

在线测试

您可以在下方输入请求参数进行在线测试。






响应结果:


            

注意:这是一个社区维护的文档,可能与官方最新版本存在差异。

如果您觉得本文档有帮助,可以考虑赞助支持:爱发电