我创建了一个非常基本的Google Apps脚本。这是我的doPost()
和doGet()
:
function doPost(e) {
return respond(JSON.stringify({result: "Hello world!"}));
}
function doGet(e) {
return respond(JSON.stringify({result: "Hello world!"}));
}
function respond(response) {
return ContentService
.createTextOutput(response)
.setMimeType(ContentService.MimeType.JSON)
}
我已经使用新版本部署了应用程序。它设置为以我的身份运行,但每个人都可以运行它,包括匿名。
我通过从命令行运行cURL来测试端点,对于GET,它按预期工作:
请求 -
curl -L https://script.google.com/macros/s/AKfycbxYxgMfMkR6hGI5UO2Gn8tg369oqsy_W41-olb0Do1y8gOjaNvm/exec
回应 -
{"result":"Hello world!"}
但对于POST:
请求 -
curl -H "Content-Length: 0" -D "p=p" -X POST -L https://script.google.com/macros/s/AKfycbxYxgMfMkR6hGI5UO2Gn8tg369oqsy_W41-olb0Do1y8gOjaNvm/exec
回应 -
Sorry, unable to open the file at this time.
Please check the address and try again.
从命令中可以看出,我必须稍微操作一下才能做到这一点:包括虚拟数据,添加内容长度标头,以及添加-L标志以使用重定向。
然而,我被卡住了。为什么不能“找到文件”?为什么它认为有文件?
答案 0 :(得分:1)
我怀疑你需要发送数据。
这有效(我得到{"result":"POST request received!"}
):
curl -H 'Content-Type: application/json' -d {} -L https://script.google.com/macros/s/AKfycbxYxgMfMkR6hGI5UO2Gn8tg369oqsy_W41-olb0Do1y8gOjaNvm/exec
就像这样:
curl -d "" -L https://script.google.com/macros/s/AKfycbxYxgMfMkR6hGI5UO2Gn8tg369oqsy_W41-olb0Do1y8gOjaNvm/exec