【发布时间】:2019-10-27 13:24:34
【问题描述】:
我创建了一个 Google 脚本并将其作为网络应用程序发布,very much like this post has。
但是,我想使用 Postman 调用我极其简单的 doGet 方法。 Web 应用程序以我的身份以匿名访问和执行权限发布。
我希望能够将 URL 粘贴到 Postman 中,设置 GET 动词并点击 Send - 并看到我在浏览器中看到的相同结果。我没有。
我做错了什么?
我在我的 Google 云端硬盘中创建了一个名为 devices 的 Google Apps Script。我添加了这个功能:
function doDelete(e) {
return HtmlService.createHtmlOutput('{"test":"yes"}');
}
很简单,我知道,但应该使用以下方式响应 DELETE 请求:
{
"test": "yes"
}
然后我点击Save,然后点击Deploy > Publish as web app...,选项如下:
- 项目版本:新
- 以我的身份执行应用程序
- 谁有权访问:任何人,甚至是匿名的
我点击Update 并获得如下网址:
https://script.google.com/macros/s/ABcdefgHInmLDGiHmpGmXkXIxMjsh0s61sKZ9ov6OOSpkb--1quTtfM/exec
如果函数名为doGet,并且我将 URL 粘贴到浏览器中,我会看到上面提到的这个 JSON。
如果我离开名为 doDelete 的函数并从 Postman 发出 DELETE 请求,我会得到:
无法得到任何响应连接到时出错 https://script.google.com/macros/s/ABcdefgHInmLDGiHmpGmXkXIxMjsh0s61sKZ9ov6OOSpkb--1quTtfM/exec。 为什么会发生这种情况:服务器无法发送响应: 确保后端正常工作 自签名 SSL 证书被阻止:通过关闭“SSL”来解决此问题 “设置”>“常规代理”中配置的证书验证 错误地确保在设置>中正确配置代理 代理请求超时:在“设置”>“常规”中更改请求超时
如果我将函数更改为 doGet,重新发布并使用来自 Postman 的 GET 请求调用它,我会得到相同的结果。
[编辑] 澄清
如果我使用 GET 进行 Postman 调用,并设置了 doGet 函数来调用 IFTTT webhook,则 webhook 会触发。我还可以在 Postman 中使用 doPost 和 POST 请求使其触发。
但是,如果我在 Postman 中使用 doDelete 和 DELETE 请求,则不会调用 IFTTT webhook。
无论 Postman 中使用什么动词,我都没有得到回应 - 只有上面引用的消息。
[编辑]回复@sourabh-chorariaquestion
我目前的代码是这样的:
function doGet(e) {
return HtmlService.createHtmlOutput('{"valid":"no"}');
}
使用上述过程发布,我在使用 Postman 调用时得到这个:
Could not get any response
我将该请求作为GET 发出,没有任何标题。
【问题讨论】:
-
你看到了什么?见minimal reproducible example
-
我假设问题是邮递员发送的标头中没有身份验证令牌,但是当我的浏览器似乎没有时,我不确定如何获取它需要它。再说一次,我假设那是因为我使用与运行请求的帐户相同的帐户登录浏览器。但是……网络应用程序设置为允许匿名访问,所以身份验证要求没有实际意义,不是吗?
-
我怀疑谷歌应用程序脚本不支持 HTTP 动词,而不支持具有简单函数名称的 GET 和 POST。
标签: google-apps-script postman