【发布时间】:2022-04-14 00:39:28
【问题描述】:
我一直在使用 Canvas REST API,但遇到了一些限制,因此被定向到他们的实验性 GraphQL API。鉴于其实验性质,他们几乎没有关于它的文档。尽管它对我正在构建的东西有好处,但我在互联网上也找不到很多东西。截至目前,我什至无法进行基本查询。
function testsendgraphql() {
const url = "https://hsccsd.beta.instructure.com:443/api/graphql";
const payload = `
query {
course(id: 1234) {
{
name
}
}
}`;
const options = {
"method": "POST",
"headers": { "Content-Type": "application/json", "Authorization": "Bearer "+getcanvasaccesstoken() },
"body": payload
};
Logger.log(query);
apiresponse = UrlFetchApp.fetch(url,options);
var head = apiresponse.getAllHeaders();
var data = JSON.parse(apiresponse.getContentText());
Logger.log(data);
Logger.log(head);
}
运行上述代码会得到 200 的响应代码,但会显示以下消息:
{errors=[{message=No query string was present}]}
我的有效载荷格式似乎已关闭。任何帮助将不胜感激。
【问题讨论】:
-
在你的脚本中,当
options中的body修改为payload,你会得到什么结果? Ref如果这不是您问题的直接解决方案,能否提供您要使用的API的官方文档? -
我什至没有意识到这一点。我现在收到一个失败的请求和一个 400 代码。不幸的是,文档是有限的。 GraphQL 据说已经为 Canvas 做好了准备,但还没有正式发布,因此没有官方文档。这是他们所拥有的链接canvas.instructure.com/doc/api/file.graphql.html
-
感谢您的回复。我注意到您的问题已更新。当我看到你更新的问题时,我想我必须为我糟糕的英语水平道歉。看来您将
"body": query修改为"body": payload。但我提议将"body": query修改为"payload": query。使用更新后的问题时,它是"payload": payload。 -
但是,很遗憾,我认为仅通过上述修改可能无法解决您的问题。从您的附加文档中,我仍然不确定您要使用的 API 规范。我为此道歉。为了正确理解您要使用的 API,我可以询问您确认您工作正常的示例 curl 命令吗?通过这个,我想检查一下。
标签: javascript google-apps-script graphql