如何在UrlFetchApp的GET请求体中传递参数调用Jira API?
解决Google Apps Script调用Jira「Get issue limit report」API的GET请求带体问题
核心问题是:Jira的「Get issue limit report」API要求通过GET请求携带JSON请求体,但Google Apps Script的UrlFetchApp在method: "get"时会忽略payload参数,导致参数无法传递。而curl允许GET请求携带请求体,所以原curl命令可以正常运行。
修改后的可行代码
var url = "https://my-domain.atlassian.net/rest/api/3/issue/limit/report?isReturningKeys=true"; var params = { "issuesApproachingLimitParams": {"worklog": 8000} }; var MY_TOKEN = "你的实际Token"; // 替换为真实授权Token var options = { method: "post", // 改为POST方法绕过UrlFetchApp的GET限制 muteHttpExceptions: true, payload: JSON.stringify(params), headers: { 'Authorization': 'Basic ' + MY_TOKEN, 'Accept': 'application/json', 'Content-Type': 'application/json', 'X-HTTP-Method-Override': 'GET' // 告知Jira按GET逻辑处理该请求 } }; var req = UrlFetchApp.fetch(url, options); // 可添加结果处理逻辑,比如打印返回内容 console.log(req.getContentText());
关键修改说明
- 把请求方法改为
post:让UrlFetchApp允许携带payload参数发送请求 - 添加
X-HTTP-Method-Override: GET请求头:Jira收到请求后,会按照GET接口的逻辑处理这个POST请求,同时正常读取请求体中的参数 - 保留
Content-Type: application/json和JSON格式的payload:确保Jira能正确解析请求体里的参数
内容的提问来源于stack exchange,提问作者Michele Fabbri
相关产品推荐
相关产品推荐

