javascript - 通过调用shopify api创建新产品

标签 javascript node.js reactjs https shopify-app

我正在尝试通过调用 shopify 产品 api (/admin/api/2020-01/products.json) 创建新产品。我正在尝试使用“https”模块来实现此目的。下面是示例代码

const url1 = 'https://{api_token}@tuscstore.myshopify.com/admin/api/2020-01/products.json';
    var obj = {
      "product":[
          {
              "title": "Saturn",
              "body_html": "<p>The epitome of elegance</p>",
              "vendor": "Soltions inc",
              "product_type": "Planets",
              "handle": "saturn",
              "tags": "",
              "images": [
                  {
                      "src": "https://solarsystem.nasa.gov/system/stellar_items/image_files/38_saturn_1600x900.jpg"
                  }
              ]
          }
      ]
    };

const https = require('https');

var data = JSON.stringify(obj)

const options = new URL(url1);

var req = https.request(options, (res) => {
  console.log('statusCode:', res.statusCode);
  console.log('headers:', res.headers);

/*   res.on('data', (d) => {
     process.stdout.write(d);
  }); */
});

req.on('error', (e) => {
  console.error(e);
});

req.write(data);
req.end();

const Index = () => (
    <div>
      <p>Sample app using React and Next.js</p>
    </div>
  );

export default Index;

我面临两个问题,

  1. 当我执行“process.stdout.write(d)”时,我收到cannot readproperty“write”undefined。
  2. 如果我像我所做的那样将其注释掉 上面的代码,我没有收到错误。

无论哪种情况,我得到的状态代码都是 200,而不是 201,这是根据 shopify 文档我应该收到的。

有人可以帮我解决问题吗?

编辑:使用 Post,我收到类型错误

const https = require('https');

var data = JSON.stringify(obj)


var options = {
  hostname: 'https://{apikey:password}@tuscstore.myshopify.com/admin/api/2020-01',
  path: '/products.json',
  method: 'POST',
  headers: {
       'Content-Type': 'application/json',
       /*'Content-Length': data.length*/
       'Authorization' : 'API_TOKEN'
     }
};


var req = https.request(options, (res) => {
  console.log('statusCode:', res.statusCode);
  console.log('headers:', res.headers);
});

req.on('error', (e) => {
  console.error(e);
});

req.write(data);
req.end();

类型错误:无法在“窗口”上执行“获取”:无法解析 https://[https:// 中的 URL {APIKEY:PWD}@tuscstore.myshopify.com/admin/api/2020-01]/products.json

最佳答案

您创建一个新产品时,您必须发出http POST 请求,现在您发出http GET 请求,您应该像这样更新您的选项:

const options = {
  hostname: 'https://apikey:password@<@store_url>/admin/api/2020-01', // your host name
  path: '/shop.json', // your end point
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization' : 'YOUR_API_TOKEN'
  }
}

或者您可以使用此软件包来解决您的所有问题 https://www.npmjs.com/package/shopify-api-node

关于javascript - 通过调用shopify api创建新产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60256456/

相关文章:

javascript - 相当于 PropTypes.oneOf 的 typescript ,来自现有变量

jquery - NodeJS 如何在服务器中获取数据,通过 POST 从 jquery ajax 调用发送

javascript - 在 <select multiple> 中更改所选选项的颜色

这段代码之后 JavaScript 停止工作

javascript - 检查 jQuery 中的类是否存在 DIV 元素

ruby-on-rails - Node.js - 在 HTTP GET 请求查询中发送时将数组转换为对象

node.js - Skype 与 Node 集成错误 -[TypeError : Cannot read property 'logger' of undefined]

javascript - momentJS toNow() 和 to() 显示实际时间,而不是 1 小时或 44 分钟

javascript - 在 React 中使用从另一个 JavaScript 文件导出的图片时出现问题

javascript - 多个 $http promise 使用工厂, Angular