You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Excel中为REST API请求添加三个指定请求头?

别慌!在Excel里给REST API请求添加那三个指定的请求头其实不难,有两种常用方案,我给你一步步拆解,顺便解答你关于JSON的疑问:

方法1:使用Power Query(推荐,无需复杂代码)

这是Excel内置的可视化数据获取工具,操作起来很直观:

  • 打开Excel,切换到「数据」选项卡,点击「获取数据」→「自其他来源」→「自Web」
  • 在弹出的窗口中输入目标网站的API请求URL,点击「确定」
  • 进入Power Query编辑器后,点击「转换」选项卡的「高级编辑器」
  • 在编辑器里修改M语言代码,添加请求头参数。这里我给你一个示例模板,替换成你的令牌和API地址即可:
let
    url = "https://你要调用的API地址",
    // 配置要求的三个请求头
    headers = [
        #"X-AppSecretToken" = "你的TheAppSecretToken值",
        #"X-AgreementGrantToken" = "你的TheAgreementGrantToken值",
        #"Content-Type" = "application/json"
    ],
    // 如果是GET请求,用下面这行
    response = Web.Contents(url, [Headers=headers]),
    // 如果是POST请求,需要添加JSON格式的请求体(取消注释下面两行)
    // body = Json.FromValue([参数1="值1", 参数2="值2"]),
    // response = Web.Contents(url, [Headers=headers, Content=body]),
    // 解析JSON响应
    jsonResponse = Json.Document(response)
in
    jsonResponse
  • 修改完成后点击「完成」,API返回的数据就会加载到Excel工作表中。
方法2:使用VBA代码(适合需要自定义逻辑的场景)

如果需要更灵活的控制(比如批量调用、处理复杂响应),可以用VBA实现:

  • Alt+F11打开VBA编辑器,右键点击左侧项目列表,选择「插入」→「模块」
  • 粘贴以下代码,替换你的令牌、API地址和请求参数:
Sub CallTargetAPI()
    Dim objHTTP As Object
    Dim apiUrl As String
    Dim appSecretToken As String
    Dim agreementGrantToken As String
    Dim postBody As String
    
    ' 替换成你的实际参数
    apiUrl = "https://你要调用的API地址"
    appSecretToken = "你的TheAppSecretToken值"
    agreementGrantToken = "你的TheAgreementGrantToken值"
    
    ' 如果是POST请求,构造JSON格式的请求体(GET请求可以注释掉这行)
    postBody = "{""参数名1"":""参数值1"", ""参数名2"":""参数值2""}"
    
    Set objHTTP = CreateObject("MSXML2.XMLHTTP")
    With objHTTP
        ' 根据是否有请求体选择请求方法(GET/POST)
        .Open IIf(postBody = "", "GET", "POST"), apiUrl, False
        ' 添加要求的三个请求头
        .SetRequestHeader "X-AppSecretToken", appSecretToken
        .SetRequestHeader "X-AgreementGrantToken", agreementGrantToken
        .SetRequestHeader "Content-Type", "application/json"
        
        ' 发送请求(POST请求附带JSON体)
        If postBody <> "" Then
            .Send postBody
        Else
            .Send
        End If
        
        ' 将API响应输出到A1单元格(可根据需求修改)
        Range("A1").Value = .ResponseText
    End With
    
    Set objHTTP = Nothing
End Sub
  • 按F5运行宏,即可完成API调用。
关于JSON的疑问

指南里指定了Content-Type: application/json,这意味着:

  • 如果你的API请求是POST类型(需要向服务器提交数据),那么请求体必须是JSON格式的字符串,不然服务器可能无法解析你的请求
  • 如果是GET类型(仅获取数据),虽然不需要提交请求体,但这个请求头还是要保留——它是告诉服务器你期望接收JSON格式的响应,同时也是对方API明确要求的必填头字段

内容的提问来源于stack exchange,提问作者Blab

火山引擎 最新活动