Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Nodejs mencipta klien untuk menghantar permintaan

Nodejs mencipta klien untuk menghantar permintaan

王林
王林asal
2023-05-17 09:32:36664semak imbas

Node.js ialah persekitaran masa jalan bahagian belakang sumber terbuka yang ditulis dalam Javascript, yang membenarkan pembangun menulis skrip menggunakan Javascript pada bahagian pelayan. Dalam Node.js, kami boleh menggunakan modul http terbina dalam untuk mencipta pelayan HTTP dan berkomunikasi dengan pelanggan. Pada masa yang sama, kami juga boleh menggunakan modul http untuk mencipta klien dan menghantar permintaan.

Dalam artikel ini, kita akan membincangkan cara membuat klien dan menghantar permintaan HTTP ke pelayan menggunakan Node.js.

  1. Mencipta klien HTTP

Untuk mencipta klien HTTP, kita perlu menggunakan kaedah request() modul http. Kaedah request() menerima dua parameter: pilihan dan fungsi panggil balik.

Parameter pilihan ialah objek yang digunakan untuk menentukan butiran permintaan, termasuk URL yang diminta, kaedah yang diminta, pengepala permintaan dan badan permintaan.

Fungsi panggil balik ialah fungsi panggil balik yang digunakan untuk memproses data yang dijawab oleh pelayan. Apabila data respons tersedia, Node.js akan memanggil fungsi panggil balik ini secara automatik untuk pembangun memproses data respons.

Berikut ialah contoh mudah cara membuat klien HTTP menggunakan Node.js:

const http = require('http');

const options = {
  hostname: 'localhost',
  port: 3000,
  path: '/api/users',
  method: 'GET',
  headers: {
    'Content-Type': 'application/json'
  }
};

const req = http.request(options, (res) => {
  console.log(`statusCode: ${res.statusCode}`);

  res.on('data', (chunk) => {
    console.log(chunk.toString());
  });

  res.on('end', () => {
    console.log('请求结束')
  });
});

req.on('error', (error) => {
  console.error(error)
});

req.end();

Dalam kod di atas, kami mencipta objek pilihan untuk menerangkan butiran permintaan, termasuk URL yang diminta , kaedah permintaan, pengepala permintaan, isi permintaan, dsb. Seterusnya, kami menggunakan kaedah http.request() untuk mencipta req objek permintaan, dan masukkan objek pilihan dan fungsi panggil balik.

Apabila req memanggil kaedah end(), permintaan akan dihantar ke pelayan. Sebelum kaedah end() dipanggil, kita boleh menggunakan kaedah req.write() untuk menulis data badan permintaan. Apabila data respons pelayan tersedia, Node.js akan memanggil fungsi panggil balik dan menghantar semula objek respons. Kami menggunakan kaedah res.on() dalam fungsi panggil balik untuk mengendalikan respons pelayan dan kami boleh menggunakan pendengar peristiwa data apabila pelayan menghantar bongkah data. Apabila respons pelayan tamat, acara tamat akan dimatikan.

  1. Hantar permintaan POST

Dalam contoh di atas, kami menggunakan permintaan GET. Jika anda perlu menghantar permintaan POST, anda perlu menentukan kaedah permintaan sebagai POST dalam objek pilihan dan mengkonfigurasi data badan permintaan. Berikut ialah contoh cara menggunakan kaedah POST untuk menghantar permintaan HTTP:

const http = require('http');

const postData = JSON.stringify({
  'msg': 'Hello World!'
});

const options = {
  hostname: 'localhost',
  port: 3000,
  path: '/api/users',
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Content-Length': postData.length
  }
};

const req = http.request(options, (res) => {
  console.log(`statusCode: ${res.statusCode}`);

  res.on('data', (chunk) => {
    console.log(chunk.toString());
  });

  res.on('end', () => {
    console.log('请求结束')
  });
});

req.on('error', (error) => {
  console.error(error)
});

req.write(postData);
req.end();

Dalam kod di atas, kami menggunakan kaedah JSON.stringify() untuk menukar objek JSON yang mengandungi atribut msg kepada rentetan dan tetapkan nilai kepada pembolehubah postData. Seterusnya, kami mencipta objek pilihan yang mengandungi butiran permintaan POST dan menentukan panjang postData sebagai nilai atribut Panjang Kandungan bagi pengepala permintaan. Akhir sekali, kami menggunakan kaedah req.write() untuk menulis data postData, dan kemudian memanggil kaedah req.end() untuk menghantar permintaan.

  1. Klien menghantar fail

Dalam sesetengah kes, kami perlu menghantar fail tempatan ke pelayan. Dalam Node.js, kita boleh menggunakan kaedah createReadStream() dalam modul fs untuk mencipta strim boleh dibaca dan menambahkannya pada objek permintaan. Berikut ialah contoh cara menghantar fail dalam Node.js:

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

const options = {
  hostname: 'localhost',
  port: 3000,
  path: '/api/users',
  method: 'POST',
  headers: {
    'Content-Type': 'text/plain',
    'Content-Disposition': 'attachment; filename=text.txt'
  }
};

const req = http.request(options, (res) => {
  console.log(`statusCode: ${res.statusCode}`);

  res.on('data', (chunk) => {
    console.log(chunk.toString());
  });

  res.on('end', () => {
    console.log('请求结束')
  });
});

req.on('error', (error) => {
  console.error(error)
});

const readStream = fs.createReadStream('/path/to/file.txt');
readStream.pipe(req);

req.end();

Dalam kod di atas, kami mencipta objek pilihan untuk menerangkan butiran permintaan dan menentukan kaedah permintaan sebagai POST. Seterusnya, kami menggunakan kaedah createReadStream() untuk mencipta strim boleh dibaca, dan kemudian menambah strim boleh dibaca pada objek permintaan melalui kaedah pipe(). Akhir sekali, kami menghantar permintaan menggunakan kaedah req.end().

  1. Klien menghantar data JSON

Menghantar data JSON dalam Node.js adalah sangat mudah, cuma buat objek JSON dan hantarkannya sebagai badan permintaan. Berikut ialah contoh cara menghantar data JSON dalam Node.js:

const http = require('http');

const data = JSON.stringify({
  'firstName': 'John',
  'lastName': 'Doe'
});

const options = {
  hostname: 'localhost',
  port: 3000,
  path: '/api/users',
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Content-Length': data.length
  }
};

const req = http.request(options, (res) => {
  console.log(`statusCode: ${res.statusCode}`);

  res.on('data', (chunk) => {
    console.log(chunk.toString());
  });

  res.on('end', () => {
    console.log('请求结束')
  });
});

req.on('error', (error) => {
  console.error(error)
});

req.write(data);
req.end();

Dalam kod di atas, kami mencipta objek JSON dan menukarnya kepada rentetan, kemudian menulisnya dalam badan permintaan dan menghantarnya ke pelayan. Akhir sekali, kami menghantar permintaan menggunakan kaedah req.end().

Ringkasan

Mencipta klien HTTP dalam Node.js dan menghantar permintaan adalah sangat mudah. Kita boleh menggunakan kaedah request() modul http untuk mencipta objek permintaan dan memproses respons pelayan dalam fungsi panggil balik. Jika anda perlu menghantar permintaan POST, anda perlu menentukan kaedah permintaan sebagai POST dan mengkonfigurasi data badan permintaan. Jika anda perlu menghantar fail, anda perlu mencipta strim boleh dibaca menggunakan kaedah createReadStream() dalam modul fs dan menambahnya pada objek permintaan. Jika anda perlu menghantar data JSON, anda perlu menukar objek JSON menjadi rentetan dan menulisnya ke dalam badan permintaan.

Atas ialah kandungan terperinci Nodejs mencipta klien untuk menghantar permintaan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn