In früheren Artikeln habe ich mich darauf konzentriert, einen Node.js -Server zu erstellen, um HTTP -Anforderungen zu bearbeiten. Dieser Artikel befasst sich mit dem Problem umgekehrt, indem Sie Ihnen zeigen, wie HTTP -Anforderungen von Ihren Node.js -Anwendungen erstellt werden. Möglicherweise fragen Sie sich, warum Sie das tun möchten. Zwei Anwendungen kommen sofort in den Sinn - Web -Scraping und Proxying. Scrapers sind Software, die Webseiten herunterladen und programmatisch Informationen aus ihnen extrahieren. Proxy -Server fungieren als Vermittler, leiten Kundenanfragen an andere Server weiter und senden die Antworten zurück.
Der einfachste Weg, um HTTP -Anforderungen in node.js zu erstellen, ist die Verwendung des Anforderungsmoduls. Mit der Anforderung von Mikeal Rogers können Sie alle Arten von HTTP -Anfragen erstellen, einschließlich Get, Post, Put und Löschen. Seine Flexibilität macht das Anforderungsmodul ideal für die Interaktion mit erholsamen APIs. Sie können die Anforderung mit dem folgenden NPM -Befehl installieren.
npm install request
Erstellen Sie nach der Installation der Anforderung eine neue Datei node.js, die den unten angegebenen Code enthält. Die erste Zeile des Beispiels wird verwendet, um die Anfrage in das Programm zu importieren. Eine HTTP -Anforderung zu erstellen ist so einfach wie das Aufrufen der Funktion Request (). In diesem Beispiel stellen wir eine Anfrage zum Herunterladen der JSPRO -Homepage. Das zweite Argument für Anfrage () ist natürlich eine Rückruffunktion.
<span>var request = require("request"); </span><span>request("http://www.sitepoint.com", function(error<span>, response, body</span>) { </span> <span>console.log(body); </span><span>});</span>
Die Rückruffunktion Request () enthält drei Argumente - Fehler, Antwort und Körper. Wie der Name schon sagt, enthält der Fehler Informationen zu Problemen, die während der HTTP -Anfrage aufgetreten sind. Das Antwortargument ist ein Objekt, das eine Vielzahl von Daten enthält, die aus dem Anruf zurückgegeben wurden, einschließlich des Statuscode, den Header und vielem mehr. Das dritte Rückrufargument, den Körper, ist der Körper der Reaktion. Im vorherigen Beispiel enthielt Body den Quellcode für die JSPRO -Homepage.
Das Anforderungsmodul kann auch mit dem Dateisystemmodul kombiniert werden, um HTTP -Anforderungen an und von Dateien zu streamen. Das folgende Beispiel holt erneut JSPRO. Anstatt den Quellcode in der Konsole anzuzeigen, wird er jedoch in eine Datei mit dem Namen "JSPRO.HTM" geschrieben.
npm install request
Die vorherigen Beispiele haben einfache GET -Anforderungen für URLs erstellt. Wir können jedoch die HTTP -Anforderung ändern, indem wir ein Konfigurationsobjekt als erstes Argument für Request () übergeben. Das folgende Beispiel verwendet die leistungsstärkere Syntax, um JSPRO erneut herunterzuladen. Beachten Sie die zahlreichen Konfigurationsparameter. Die URI- und Methodenparameter geben Anfrage an, eine Get -Anfrage an JSPRO zu senden.
<span>var request = require("request"); </span><span>request("http://www.sitepoint.com", function(error<span>, response, body</span>) { </span> <span>console.log(body); </span><span>});</span>
Der Zeitüberschreitungsparameter gibt die Anfrage an, 10.000 Millisekunden (zehn Sekunden) auf eine Antwort zu warten, bevor Sie aufgeben. Die letzten beiden Parameter befassen sich mit den folgenden Weiterleitungen. Auf vielen Seiten führen Überlösten hinter den Kulissen ohne Wissen des Benutzers durch. Die Parameter für FollowRedirect und MaxRedirects weisen die Anfrage an, bis zu zehn 3 xx HTTP -Umleitungen zu folgen. Beachten Sie auch, dass Request () viele andere Parameter unterstützt, die hier nicht angezeigt werden.
Wie bereits erwähnt, unterstützt Anfrage mehr als nur Anfragen. Eine sehr häufige Operation ist die Einreichung von Formulardaten mithilfe einer Postanforderung. Das folgende Beispiel verwendet den Formularparameter von Request (), um den Namen eines Benutzers als Teil eines Beitrags zu senden. Die PHP -Seite antwortet dann, indem Sie den Benutzer mit Namen begrüßen.
<span>var request = require("request"); </span><span>var fs = require("fs"); </span><span>request("http://www.sitepoint.com").pipe(fs.createWriteStream("jspro.htm"));</span>
Viele Websites verfolgen verschiedene Benutzerinteraktionen mit Cookies. Cookies sind kleine Datenstücke, die mit jeder HTTP -Transaktion zwischen Client und Server weitergegeben werden. Um die Verwendung von Cookies zu erleichtern, stellt die Anfrage die Methoden jar () und Cookie () bereit. Einzelne Cookies werden mit der Cookie () -Methode erstellt. In Zeile 3 des folgenden Beispiels wird ein Cookie erstellt, das den Namen des Benutzers angibt. Das Cookie wird dann zum Cookie -Glas hinzugefügt, das in Zeile 2 erstellt wurde. Wenn die HTTP -Anforderung gestellt wird, wird der JAR -Parameter verwendet, um das Cookie -JAR an den Server zu senden.
<span>var request = require("request"); </span><span>request({ </span> <span>uri: "http://www.sitepoint.com", </span> <span>method: "GET", </span> <span>timeout: 10000, </span> <span>followRedirect: true, </span> <span>maxRedirects: 10 </span><span>}, function(error<span>, response, body</span>) { </span> <span>console.log(body); </span><span>});</span>
Wenn die Antwort empfangen wird, wird der Benutzer als John begrüßt, der im Cookie gespeicherte Name. Das Cookie -Glas wird auch mit allen Änderungen des Servers aktualisiert. Wenn Sie das Cookie -Glas vor und nach der Anfrage ausdrucken, werden Sie feststellen, dass der Server den Wert des Cookies von "John" in "Fremder" geändert hat. Das gleiche Cookie -Glas kann an aufeinanderfolgende HTTP -Anfragen übergeben werden, um die Interaktionen eines echten Benutzers mit einer Website nachzuahmen.
Dieser Artikel hat das einfache, aber leistungsstarke Anforderungsmodul eingeführt. Da dieser Artikel nicht umfassend ist, empfehle ich, die Dokumentation zumindest zu durchsuchen, um zu sehen, was noch andere Anforderungen beantragen können. Seien Sie gespannt auf einen bevorstehenden Artikel, der das Web -Scraping mithilfe der Anforderung ausführlicher abdeckt.
Und wenn Sie diesen Beitrag genossen haben, werden Sie es lieben, lernbar zu sein. Der Ort, um frische Fähigkeiten und Techniken von den Meistern zu erlernen. Mitglieder erhalten sofortigen Zugriff auf alle eBooks und interaktiven Online -Kurse von SitePoint, wie Jump Start JavaScript.
Kommentare zu diesem Artikel sind geschlossen. Haben Sie eine Frage zu JavaScript? Warum nicht in unseren Foren fragen?
Sie können HTTP-Anforderungen in node.js mit den integrierten HTTP- oder HTTPS -Level HTTP-Anforderungen. HTTP -Anforderungen in node.js?
Bibliotheken von Drittanbietern bieten benutzerfreundlichere APIs, vielversprechende oder asynchronisierte Unterstützung und fügten Funktionen wie Anforderungs-/Antwortbehandlungen und automatisches JSON-Parsen hinzu, wodurch sie für Entwickler beliebte Entscheidungen treffen.Was ist der Unterschied zwischen Get- und Post -Anfragen in node.js?
GET -Anforderungen werden verwendet, um Daten von einem Server abzurufen, während Postanforderungen zum Senden von Daten zur Verarbeitung oder zum Speicher an den Server verwendet werden, häufig in Formularen oder API -Anforderungen verwendet.Kann ich machen Anfragen mit dem integrierten HTTP-Modul in node.js erhalten und posten?
Ja, Sie können Anforderungen mit den HTTP- oder HTTPS-Modulen erhalten und veröffentlichen, aber es erfordert mehr Code mit niedrigem Niveau für die Anforderungskonfiguration und die Antwort. Anfrage mit dem HTTP -Modul in node.js?Sie können Fehler mit Try/Catch -Blöcken für synchrone Anforderungen und durch Hinzufügen von Fehlerbehandlungen im Rückruf oder Verwendung von Versprechen für asynchrone Anforderungen behandeln. Node.js?
Ja, Sie können Authentifizierungs-Token oder Anmeldeinformationen in die Anforderungsheader aufnehmen, wenn Sie Bibliotheken von Drittanbietern wie Axios oder Knotenfetch verwenden. Viele APIs erfordern eine Authentifizierung für den Zugriff.Um mehrere HTTP -Anfragen gleichzeitig zu stellen, können Sie asynchrone Funktionen wie Versprechen oder Async/Warteen verwenden, oder Sie können Bibliotheken verwenden, die eine parallele Anforderung zur Handhabung unterstützen.
Das obige ist der detaillierte Inhalt vonHTTP -Anforderungen in node.js erstellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!