Запуск post-запроса с узлом, добавляющим параметр param и заголовки, получающий pointernullexception

#javascript #node.js #api #server #backend

#javascript #node.js #API #сервер #серверная часть

Вопрос:

Вот код в server.js

 const https = require('https')
const http = require("http");
const fs = require('fs');

const fileUrl = new URL('file:///Users/someone.computer/Desktop/sampleFile.csv');

const post_data = fs.readFileSync(fileUrl);

const options = {
  host: 'api.thomsonreuters.com',
  // port: 443,
  path: '/permid/match/file',
  method: 'POST',
  headers: {
    'x-ag-access-token': 'myToken',
    'x-openmatch-numberOfMatchesPerRecord': 1,
    'x-openmatch-dataType': 'Organization',
    'Content-Type': 'multipart/form-data'
  }
}

const req = https.request(options, (res) => {
  var str = '';
  console.log(res)
  console.log(`statusCode: ${res.statusCode}`)
  res.on('data', function (chunk) {
    str  = chunk;
    console.log("this is chunk = "   chunk)
  });
  res.on("end", function () {
    console.log("this is str = "   str)
  })
})

req.write(post_data);
req.end();
  

Мне нужно использовать csv-файл и запустить его через permid.org и сопоставьте мои локальные CSV-файлы, содержащие данные для сопоставления, используя их функциональность сопоставления файлов API. В их документах говорится, что мне нужно было включить параметры и заголовки, которые я включил в объект, называемый ниже options . Чтобы прочитать файл, который я использую fs npm package

когда я запускаю node server.js , я получаю ниже в терминале

 statusCode: 500
this is chunk = {"error": {"status": {
    "code": "500",
    "errorCode": "Server Error",
    "errorDescription": "java.lang.NullPointerException"
}}}
this is str = {"error": {"status": {
    "code": "500",
    "errorCode": "Server Error",
    "errorDescription": "java.lang.NullPointerException"
}}}
  

Пожалуйста, сообщите, что я делаю неправильно — заранее спасибо!

Комментарии:

1. Вы используете POST-запрос и задаете content-type; оба подразумевают, что вы намерены отправлять данные, но вы не отправляете никаких данных с запросом?

2. я отправлял этот csv-файл, не так ли? можете ли вы убедиться с помощью моего кода? можете ли вы указать, почему я не отправляю данные? Я думал, что отправляю csv-файл

3. или, может быть, мой код неявно отправляет его по запросу? не могли бы вы уточнить, пожалуйста — большое спасибо

4. Вы создаете переменную для хранения содержимого файла, но затем ничего с ней не делаете. Вам нужно будет установить options.data свойство в post_data

5. @RandyCasburn Я думаю, что вы пропускаете строку req.write(post_data);