如何在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




