Создайте новый продукт, позвонив по адресу shopify api - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь создать новый продукт, вызвав api shopify product (/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;

Я сталкиваюсь с 2 проблемами,

  1. , когда я делаю "process.stdout.write (d)", я получаю не могу прочитать свойство "запись" не определено.
  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();

TypeError: Не удалось выполнить «выборку» в «Окне»: Не удалось проанализировать URL-адрес с https: // [https: // {APIKEY: PWD} @ tuscstore.myshopify.com / admin / апи / 2020-01] /products.json

1 Ответ

1 голос
/ 17 февраля 2020

вы создаете новый продукт, вам нужно сделать http POST-запрос, и теперь вы делаете http-запрос GET, вам нужно обновить options следующим образом:

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

...