应用脚本 Shopify GraphQL 请求 - 400 响应
Posted
技术标签:
【中文标题】应用脚本 Shopify GraphQL 请求 - 400 响应【英文标题】:App Script Shopify GraphQL Request - 400 response 【发布时间】:2021-10-22 12:07:22 【问题描述】:我正在尝试通过 Google 应用脚本调用 Shopify 的 GraphQL API。
我已使用相同的正文和身份验证值通过 Postman 成功拨打电话,并且工作正常。
但是,当通过 App Script 调用 API 时,我不断收到 400 响应代码,并带有以下错误消息 "errors":"query":"Required parameter missing or invalid"
这是我正在使用的代码:
function shopifySync()
var url = "https://store-name.myshopify.com/admin/api/2021-07/graphql.json";
var payloaddata = `query orders(first: 20) edges node id `;
var payload = JSON.stringify(payloaddata);
var password = "api_password"; //Private Shopify App
var response = UrlFetchApp.fetch(url,
'method': "POST",
'muteHttpExceptions': true,
'headers': "X-Shopify-Access-Token": password , "Content-Type": "application/json",
'payload': payload
,
);
Logger.log(response.getContentText());
Logger.log(response.getResponseCode());
在 Shopify 的文档中,400 HTTP 响应被归类为“错误请求”,解释是:
服务器无法理解请求,通常是由于语法错误或 Content-Type 标头未正确设置为 application/json。 如果请求在 OAuth 令牌交换过程中提供了无效的 code 参数,也会返回此状态。
来源:https://shopify.dev/api/usage/response-codes
如何解决此问题并成功调用 Shopify 的 GraphQL API?
【问题讨论】:
【参考方案1】:我在另一家 Saas 公司的 GraphQL 文档中找到了解决方案。
问题在于有效载荷的格式
我是如何尝试的:
'payload': payload
应该如何:
'payload': JSON.stringify('query': payloaddata)
适用于 Shopify 的 2021-07 GraphQL API 的最终代码:
var url = "https://store-name.myshopify.com/admin/api/2021-07/graphql.json";
var payloaddata = 'query orders(first: 20) edges node id ';
var password = "api_password";
var response = UrlFetchApp.fetch(url,
'method': "POST",
'muteHttpExceptions': true,
'headers': "X-Shopify-Access-Token": password , "Content-Type": "application/json",
'payload': JSON.stringify('query': payloaddata)
);
【讨论】:
以上是关于应用脚本 Shopify GraphQL 请求 - 400 响应的主要内容,如果未能解决你的问题,请参考以下文章
Shopify StoreFront API GraphQL 查询不返回任何内容
javascript 使用Vanilla JavaScript Shopify GraphQL Storefront API
javascript 使用Vanilla JavaScript Shopify GraphQL Storefront API