Google Apps脚本:使用cURL测试doPost()

时间:2018-04-02 20:22:04

标签: http curl google-apps-script

我创建了一个非常基本的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标志以使用重定向。

然而,我被卡住了。为什么不能“找到文件”?为什么它认为有文件?

1 个答案:

答案 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