如何解决使用UrlFetchApp发送参数
我试图发出GET请求,但是根据API的文档,它需要额外的参数才能使我访问数据。我搜索了如何使用params
发送UrlFetch
的过程,发现documentation的主要目的是在POST
而非GET
请求中发送参数。
我已经在Headers
的身份验证请求中发送了UrlFetch
,但是我想发送其他参数。
那么有一种简单的方法吗?
下面是我正在做的事和我想做的事的一个例子。
我的代码:
const someService = authorize();
let response = UrlFetchApp.fetch('https://www.webSite.com/api/teams.json',{
headers: {
// Sending access token in the request
Authorization: 'Bearer ' + someService.getAccessToken()
}
});
我想做什么
const someService = authorize();
let response = UrlFetchApp.fetch('https://www.webSite.com/api/teams.json',{
headers: {
Authorization: 'Bearer ' + someService.getAccessToken()
},parameters:{
'teamId': 1234
}
});
// URL should be like that: https://www.webSite.com/api/teams.json?access_token=1234abc&teamId=1234
解决方法
不幸的是,UrlFetchApp类没有内置的方法来自动从对象生成URL搜索参数。但是Google在其OAuth2 library中提供了一个您可以复制的文件:
function sendRequest() {
const someService = authorize();
let baseUrl = 'https://www.webSite.com/api/teams.json';
let params = {
'access_token': someService.getAccessToken(),'teamId': 1234
};
let response = UrlFetchApp.fetch(buildUrl_(baseUrl,params));
}
/**
* Builds a complete URL from a base URL and a map of URL parameters.
* @param {string} url The base URL.
* @param {Object.<string,string>} params The URL parameters and values.
* @return {string} The complete URL.
* @private
*/
function buildUrl_(url,params) {
var paramString = Object.keys(params).map(function(key) {
return encodeURIComponent(key) + '=' + encodeURIComponent(params[key]);
}).join('&');
return url + (url.indexOf('?') >= 0 ? '&' : '?') + paramString;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。