Как отправить запрос HTTP / 2.0 с помощью node.js - PullRequest
2 голосов
/ 29 сентября 2019

Как я могу отправить запрос httpVersion 2.0 в nodejs?

Я перепробовал почти каждый модуль запроса, и все они httpVersion 1.1

Ответы [ 2 ]

1 голос
/ 30 сентября 2019

Получить запрос :

const http2 = require("http2");
const client = http2.connect("https://www.google.com");

const req = client.request({
 ":path": "/"
});

let data = "";

req.on("response", (headers, flags) => {
 for (const name in headers) {
  console.log(`${name}: ${headers[name]}`);
 }

});

req.on("data", chunk => {
 data += chunk;
});
req.on("end", () => {
 console.log(data);
 client.close();
});
req.end();

POST-запрос

     let res = "";
      let postbody = JSON.stringify({
       key: value
      });
      let baseurl = 'baseurl'
      let path = '/any-path'
      const client = http2.connect(baseurl);
      const req = client.request({
       ":method": "POST",
       ":path": path,
       "content-type": "application/json",
       "content-length": Buffer.byteLength(postbody),
      });


      req.on("response", (headers, flags) => {
       for (const name in headers) {
        console.log(`${name}: ${headers[name]}`);
       }

      });
      req.on("data", chunk => {
       res = res + chunk;
      });
      req.on("end", () => {
       client.close();
      });

   req.end(postbody)

Для получения более подробной информации, пожалуйста, см. Эти официальные документы: https://nodejs.org/api/http2.html#http2_client_side_example

1 голос
/ 29 сентября 2019

Начиная с Node.js 8.4.0, вы можете использовать встроенный модуль http2 для реализации сервера http2. Или, если вы хотите использовать http2 с Express, вот отличный модуль для npm: spdy .

Вот код из express-spdy :

const fs = require('fs');
const path = require('path');
const express = require('express');
const spdy = require('spdy');

const CERTS_ROOT = '../../certs/';

const app = express();

app.use(express.static('static'));

const config = {
    cert: fs.readFileSync(path.resolve(CERTS_ROOT, 'server.crt')),
    key: fs.readFileSync(path.resolve(CERTS_ROOT, 'server.key')),
};

spdy.createServer(config, app).listen(3000, (err) => {
    if (err) {
        console.error('An error occured', error);
        return;
    }

    console.log('Server listening on https://localhost:3000.')
});
...