Как получить заголовки ответа Node.js и код состояния? - PullRequest
0 голосов
/ 08 ноября 2018

У меня нет большого опыта работы с Node.js, но кажется, что документация http / https довольно ужасна, и я не могу понять, как получить общие заголовки ответа:

  • Cache-Control
  • Pragma
  • 1008 * Истекает *
  • Content-Type
  • Content-Length
  • Дата
  • Подключение
  • Set-Cookie
  • Strict-Transport-Security

Учитывая мой код ниже, как я могу определить statusCode и заголовки ответа?

const promiseResponse = new Promise((resolve, reject) => {
  const fullResponse = {
    status: '',
    body: '',
    headers: ''
  };

  const request = https.request({
    hostname: testHostname,
    path: testPath,
    method: testMethod,
    headers: {
      'x-jwt': jwt,
      'content-type': contentType,
    }
  });

  request.on('error', reject);
  request.on('response', response => {
    response.setEncoding('utf8');
    response.on('data', chunk => { fullResponse.body += chunk; });
    response.on('end', () => {
      fullResponse.body = JSON.parse(fullResponse.body);
      resolve(fullResponse);
    });
  });

  request.write(JSON.stringify(testBody));
  request.end();
});

promiseResponse.then(
  response => {
    console.log('success:', response);
  },
  error => {
    console.error('error:', error);
  }
);

1 Ответ

0 голосов
/ 08 ноября 2018

В вашем коде здесь:

request.on('response', response => { ... });

Вы получаете объект ответа. Этот объект является экземпляром http.IncomingMessage, который может обращаться к response.statusCode и response.headers следующим образом:

request.on('response', response => {
    console.log(response.statusCode);        
    console.log(response.headers);
    response.on('data', chunk => { fullResponse.body += chunk; });
});

Многие люди (включая меня) находят модули более высокого уровня request или request-promise намного более простыми в использовании. Они построены поверх http.request и https.request, но дают вам гораздо более простой в использовании интерфейс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...