Heim > Web-Frontend > Front-End-Fragen und Antworten > NodeJS-Anfrageadresse

NodeJS-Anfrageadresse

WBOY
Freigeben: 2023-05-13 21:29:11
Original
506 Leute haben es durchsucht

Im Prozess der Webentwicklung müssen wir häufig Anfragen an das Backend senden, Daten abrufen oder einige Vorgänge ausführen. Node.js bietet eine schnelle und einfache Möglichkeit, Anfragen zu senden und die zurückgegebenen Inhalte zu verarbeiten. In diesem Artikel wird erläutert, wie Sie mit Node.js HTTP/HTTPS-Anfragen senden und den zurückgegebenen Anfrageinhalt verarbeiten.

Zuerst müssen wir das Paket request installieren, das eine beliebte Methode zum Senden von HTTP-Anfragen in Node.js ist. Sie können es mit dem folgenden Befehl installieren: request包,它是Node.js中发送HTTP请求的一种流行的方式。可以通过以下命令进行安装:

npm install request
Nach dem Login kopieren

安装完成后,就可以使用request包来发送HTTP/HTTPS请求了。

发送请求

使用request发送请求很简单,只需要传入一个URL参数即可,例如:

const request = require('request');

request('https://www.baidu.com', function (error, response, body) {
  console.log('error:', error); // 打印错误信息
  console.log('statusCode:', response && response.statusCode); // 打印响应状态码
  console.log('body:', body); // 打印HTML内容
});
Nach dem Login kopieren

上述代码发送一个GET请求到百度网站,并打印响应的状态码和HTML内容。

如果需要发送POST请求,则需要传入一个包含请求参数的实体:

const request = require('request');

request.post('https://api.example.com/login', {form: {username: 'example', password: 'password'}}, 
  function (error, response, body) {
    console.log('error:', error); // 打印错误信息
    console.log('statusCode:', response && response.statusCode); // 打印响应状态码
    console.log('body:', body); // 打印响应内容
  }
);
Nach dem Login kopieren

上述代码发送一个POST请求到https://api.example.com/login,并带上用户名和密码参数。form是一个参数实体,包含了请求的参数。

处理响应

当请求执行完毕后,request回调后将会返回一个响应对象,其中包含了响应的状态码和实体内容。可以使用response.statusCode访问响应状态码,使用response.body访问实体内容。

除了直接打印内容,还可以对返回的内容进行解析和处理。常见的处理方式有字符串解析、JSON解析、二进制解析等。

例如,当回调返回HTML内容时,可以使用cheerio或者node-html-parser来进行解析:

const request = require('request');
const cheerio = require('cheerio');

request('https://www.example.com', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    const $ = cheerio.load(body);
    console.log($('title').text());
  }
});
Nach dem Login kopieren

上述代码使用cheerio解析HTML内容,打印了网页的标题。

当回调返回JSON格式的内容时,可以使用JSON.parse方法来解析JSON字符串。例如:

const request = require('request');

request('https://api.example.com/users/1', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    const user = JSON.parse(body);
    console.log(user.name);
    console.log(user.email);
  }
});
Nach dem Login kopieren

上述代码解析了返回的JSON内容,并打印了用户的名称和邮箱。

当回调返回二进制内容时,可以使用Buffer对象来进行解码。例如:

const request = require('request');

request('https://www.example.com/logo.png', {encoding: null}, function (error, response, body) {
  if (!error && response.statusCode == 200) {
    const data = 'data:' + response.headers['content-type'] + ';base64,' + Buffer.from(body).toString('base64');
    console.log(data);
  }
});
Nach dem Login kopieren

上述代码获取了一个PNG图片,并使用Buffer对象将返回的二进制数据进行解码。

发送HTTPS请求

如果需要发送HTTPS请求,则需要使用https包。https包是Node.js自带的包,无需进行安装。可以像下面代码这样发送HTTPS请求:

const https = require('https');

https.get('https://www.example.com', function (response) {
  console.log('statusCode:', response.statusCode);
  console.log('headers:', response.headers);

  response.on('data', function (data) {
    console.log(data.toString());
  });
});
Nach dem Login kopieren

上述代码使用https.get方法发送了一个HTTPS GET请求,并打印了响应状态码和响应头。使用response.on方法可以监听返回内容的流并进行处理。

HTTPS请求需要进行安全认证,因此需要使用HTTPS证书。可以在参数中添加ca、cert、key等属性来指定证书。

例如:

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

const options = {
  ca: [fs.readFileSync('ca.pem')],
  cert: fs.readFileSync('cert.pem'),
  key: fs.readFileSync('key.pem')
};

https.get('https://www.example.com', options, function (response) {
  console.log('statusCode:', response.statusCode);
  console.log('headers:', response.headers);

  response.on('data', function (data) {
    console.log(data.toString());
  });
});
Nach dem Login kopieren

上述代码使用了自己的证书,其中ca是根证书的证书链,certkeyrrreee

Nachdem die Installation abgeschlossen ist, können Sie das Paket request verwenden, um HTTP/HTTPS-Anfragen zu senden.

Eine Anfrage senden

Die Verwendung von request zum Senden einer Anfrage ist sehr einfach. Sie müssen nur einen URL-Parameter übergeben, zum Beispiel: 🎜rrreee🎜Der obige Code sendet eine GET-Anfrage an Baidu Website und gibt den Status des Antwortcodes und des HTML-Inhalts aus. 🎜🎜Wenn Sie eine POST-Anfrage senden müssen, müssen Sie eine Entität übergeben, die die Anforderungsparameter enthält: 🎜rrreee🎜Der obige Code sendet eine POST-Anfrage an https://api.example.com/login code> mit den Parametern Benutzername und Passwort. <code>form ist eine Parameterentität, die die angeforderten Parameter enthält. 🎜🎜Verarbeiten der Antwort🎜🎜Wenn die Anfrage abgeschlossen ist, wird nach dem request-Rückruf ein Antwortobjekt zurückgegeben, das den Statuscode und den Entitätsinhalt der Antwort enthält. Sie können response.statusCode verwenden, um auf den Antwortstatuscode zuzugreifen, und response.body, um auf den Entitätsinhalt zuzugreifen. 🎜🎜Neben dem direkten Drucken des Inhalts kann der zurückgegebene Inhalt auch analysiert und verarbeitet werden. Zu den gängigen Verarbeitungsmethoden gehören String-Parsing, JSON-Parsing, Binärparsing usw. 🎜🎜Wenn der Rückruf beispielsweise HTML-Inhalt zurückgibt, können Sie zum Parsen cheerio oder node-html-parser verwenden: 🎜rrreee🎜Der obige Code verwendet cheerio zum Parsen HTML-Inhalt und Drucken des Titels der Webseite. 🎜🎜Wenn der Rückruf Inhalte im JSON-Format zurückgibt, können Sie die Methode JSON.parse verwenden, um die JSON-Zeichenfolge zu analysieren. Zum Beispiel: 🎜rrreee🎜Der obige Code analysiert den zurückgegebenen JSON-Inhalt und gibt den Namen und die E-Mail-Adresse des Benutzers aus. 🎜🎜Wenn der Rückruf binären Inhalt zurückgibt, können Sie das Buffer-Objekt zum Dekodieren verwenden. Zum Beispiel: 🎜rrreee🎜Der obige Code ruft ein PNG-Bild ab und verwendet das Buffer-Objekt, um die zurückgegebenen Binärdaten zu dekodieren. 🎜🎜HTTPS-Anfrage senden🎜🎜Wenn Sie eine HTTPS-Anfrage senden müssen, müssen Sie das Paket https verwenden. Das Paket https ist ein Paket, das mit Node.js geliefert wird und nicht installiert werden muss. Sie können eine HTTPS-Anfrage wie den folgenden Code senden: 🎜rrreee🎜Der obige Code verwendet die Methode https.get, um eine HTTPS-GET-Anfrage zu senden und den Antwortstatuscode und die Antwortheader auszugeben. Verwenden Sie die Methode response.on, um den Stream der zurückgegebenen Inhalte abzuhören und zu verarbeiten. 🎜🎜HTTPS-Anfragen erfordern eine Sicherheitsauthentifizierung, daher ist ein HTTPS-Zertifikat erforderlich. Sie können den Parametern ca, cert, key und andere Attribute hinzufügen, um das Zertifikat anzugeben. 🎜🎜Zum Beispiel: 🎜rrreee🎜Der obige Code verwendet ein eigenes Zertifikat, wobei ca die Zertifikatskette des Stammzertifikats ist und cert und key code> sind ein eigenes Zertifikat und ein privater Schlüssel. 🎜🎜Zusammenfassung🎜🎜In diesem Artikel wird erläutert, wie HTTP/HTTPS-Anfragen in Node.js gesendet und die zurückgegebenen Inhalte verarbeitet werden. Abschließend ist zu beachten, dass das Senden von HTTP-Anfragen möglicherweise domänenübergreifende Probleme mit sich bringt und domänenübergreifende Anforderungsheader festgelegt werden müssen. Gleichzeitig müssen Sie auch auf Sicherheits- und Leistungsprobleme achten, um zu vermeiden, dass zu viele Anfragen gestellt werden oder vertrauliche Informationen preisgegeben werden. 🎜

Das obige ist der detaillierte Inhalt vonNodeJS-Anfrageadresse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage