Простой способ публикации данных HTTPS JSON (заголовок + тело) с помощью Node.js

После прочтения нескольких интернет-сообщений, связанных с "JSON POST commands" в NodeJS, я полностью растерялся! Попробовали создать простой скрипт для отправки данных на интерфейс Restful API устройства с использованием https. Без везения ...

JSON string needs to contain: a Header incl. (Basic)Auth Token & Body content something similar like: '{"address":address,"address6":"","comment":"","duids":[],"hostnames":[],"interface":""};

Надеюсь, что у кого-то есть хороший пример или он снова укажет мне правильное направление.

Можете поделиться тем, что пробовали? Если это не сработает, кто-нибудь может указать на то, что вы сделали не так.

Evert 10.09.2018 13:54
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
1
1
476
3

Ответы 3

Вы можете использовать встроенный модуль https для вызова REST API, подпись запроса выглядит следующим образом:

https.request (URL [, параметры] [, обратный вызов])

В вашем случае вы можете попробовать следующий код:

var options = {
   host: 'host-name',
   port: 443,
   path: 'api-path',
   method: 'POST',
   // authentication headers
   headers: {
      'Authorization': 'Basic ' + new Buffer(username + ':' + passw).toString('base64')
   }   
};

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

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

У меня была точно такая же проблема всего несколько дней назад, и в итоге я создал крошечный модуль под названием json-post.

const jsonPOST = require('json-post');
// or import jsonPOST from 'json-post'

jsonPOST(
  'https://whatever:5000/seriously',
  // your JSON data as object
  {hello: 'world'},
  // optionally any extra needed header
  {'Authorization': 'Basic ' +
    new Buffer(username + ':' + passw).toString('base64')}
).then(
  console.info,
  console.error
);

Танец похож на тот, что показан в предыдущем ответе, но он упрощен разными способами. Он также хорошо работает для GitHub OAuth и других сервисов.

Я всегда использую библиотеку request, когда мне нужно выполнить HTTP-запрос в nodejs.

var request = require('request');
request({
     method: 'POST', 
     uri: 'http://myuri.com',
     headers: {
            'Content-Type' : 'application/json', 
            'AnotherHeader' : 'anotherValue' 
     }, 
     json: myjsonobj
}, (err, response, body) => {
        // handler here
})

есть и другие способы сделать запрос, например request.post(), ссылка здесь

Другие вопросы по теме