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
安装完成后,就可以使用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内容 });
上述代码发送一个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); // 打印响应内容 } );
上述代码发送一个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()); } });
上述代码使用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); } });
上述代码解析了返回的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); } });
上述代码获取了一个PNG图片,并使用Buffer
对象将返回的二进制数据进行解码。
如果需要发送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()); }); });
上述代码使用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()); }); });
上述代码使用了自己的证书,其中ca
是根证书的证书链,cert
和key
rrreee
request
verwenden, um HTTP/HTTPS-Anfragen zu senden. Eine Anfrage sendenDie 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!