5 Möglichkeiten für HTTP-Anfragen in Node.js
Lesezeit: 3 Minuten
HTTP-Anfragen sind eine Kernfunktion moderner Programmiersprachen und eines der ersten Dinge, die Entwickler lernen, wenn sie sich mit neuen Umgebungen vertraut machen. Für Node.js gibt es sowohl dank Integrationen in der Sprache als auch durch Beiträge der Community eine angemessene Menge an Lösungen für dieses Problem. Schauen wir uns die gängigsten an.
Wir nutzen die API NASA’s Astronomy Picture of the Day als JSON-API, mit der wir in all diesen Beispielen interagieren. Denn machen wir uns nichts vor – was gibt es Cooleres als das All?
Bevor es losgeht, überprüfe, ob auf deinem Rechner die aktuellen Versionen von Node.js und npm installiert sind.
HTTP – die Standardbibliothek
Ganz oben auf unserer Liste steht das standardmäßige HTTP
-Modul in der Standardbibliothek. Mit diesem Modul können wir ohne Installation externer Abhängigkeiten sofort loslegen. Einen Nachteil gibt es allerdings: im Vergleich zu anderen Lösungen überzeugt es nicht gerade in der Benutzerfreundlichkeit.
Der folgende Code sendet eine GET
-Anfrage an die NASA-API und druckt die URL für das Astronomiebild des Tages sowie eine Erklärung aus:
Viele Modulfunktionalitäten von HTTP
und HTTPS
haben ein recht niedriges Niveau. Anstelle einer bereitgestellten Callback-Funktion, die nach dem Erhalt aller Daten ausgeführt wird, erhalten wir Antwortdaten nur bröckchenweise. Außerdem müssen wir die Antwortdaten manuell parsen. Das klingt zwar in Bezug auf eine JSON-Formatierung recht banal, es ist aber dennoch ein zusätzlicher Schritt.
Ein weiteres Problem ist, dass dieses Modul HTTPS
nicht standardmäßig unterstützt. Wir benötigen also das https
-Modul, wenn die von uns genutzte API über HTTPS
kommuniziert.
Der Weg zu den von uns gewünschten Daten ist zwar etwas steinig, aber wenn wir auf das Hinzufügen zu vieler Abhängigkeiten zu unserem Code verzichten und auf die Low-Level-Funktionalität zugreifen möchten, ist dieses Dienstprogramm ganz hilfreich.
Request
Request ist ein vereinfachter HTTP-Client und mit der requests-Bibliothek von Python vergleichbar. Diese Bibliothek ist um einiges benutzerfreundlicher als das standardmäßige http
-Modul und hat sich seit etlichen Jahren in der Community bewährt.
Darauf fällt meine persönliche Wahl zur schnellen Erledigung von Tasks, seitdem ich Node.js verwende. Im Gegensatz zum http
-Modul musst du es als Abhängigkeit von npm installieren.
Führe dazu den folgenden Code in dem Verzeichnis deines Terminals aus, das für deinen Code bestimmt ist:
Wie du siehst, benötigst du im Vergleich zu oben weniger Code zum Erledigen derselben Task:
Request ist eine fantastische Option, wenn du eine benutzerfreundliche Bibliothek suchst, die mit HTTP-Anfragen auf vernünftige Weise umgeht. Wenn du Promises nutzen möchtest, dann sieh dir die Request-Promise-Bibliothek an.
Axios
Axios ist ein Promise-basierter HTTP-Client für den Browser und node.js. Promises ist ein großer Vorteil, wenn es um Code geht, der kompliziertere Ereignisketten erfordert. Das Schreiben von asynchronem Code kann verwirrend sein, aber Promises ist eine von vielen Lösungen dafür. Sogar für andere Sprachen wie Swift ist es hilfreich.
Gib zur Installation von Axios aus npm den folgenden Befehl in deinem Terminal ein:
Der folgende Code protokolliert die URL und erklärt das Astronomiebild des Tages ebenso:
Axios parst JSON-Antworten sogar standardmäßig. Wie praktisch! Wie du siehst, werden Fehler mit .catch()
verarbeitet, da wir jetzt Promises nutzen.
Mit axios.all
kannst du sogar mehrere gleichzeitige Anfragen stellen, wenn du beispielsweise an den Astronomiebildern von zwei verschiedenen Tagen interessiert bist:
Die Arbeit mit asynchronem Code kann schnell komplett unübersichtlich und lästig werden, daher ist Axios sehr praktisch, um dir auf lange Sicht das Leben zu erleichtern.
SuperAgent
Ähnlich wie Axios ist SuperAgent eine weitere verbreitete Bibliothek, die in erster Linie zum Stellen von AJAX-Anfragen im Browser genutzt wird, aber auch mit Node.js funktioniert. Nutze diesen Befehl für die Installation von SuperAgent:
Das Coole an SuperAgent ist, dass du von weiteren nützlichen Funktionen profitierst, die du in die Anfragen integrieren kannst, zum Beispiel query()
, um den Anfragen Parameter hinzuzufügen. In den vorherigen Beispielen haben wir diese nur manuell der URL hinzugefügt, aber hier siehst du die Funktion von SuperAgent dafür:
Wie auch bei Axios musst du die JSON-Antwort nicht selbst parsen, was sehr praktisch ist.
Got
Got ist eine weitere gute Wahl, wenn du lieber leichtgängigere Bibliotheken nutzen möchtest. Es kann auch in Twilio Functions verwendet werden.
Installiere Got mit npm erneut:
Wie Axios auch funktioniert Got mit Promises. Der folgende Code funktioniert genauso wie der Rest der Beispiele:
Got ist super, wenn du im Vergleich zu Request eher kleinere, nicht so aufgeblasene Bibliotheken bevorzugst.
Abschließende Gedanken
Natürlich fanden hier nicht alle Lösungen Platz, aber du weißt nun, wie die grundlegenden Funktionen in ein paar wenigen, verbreiteten HTTP-Bibliotheken in Node aussehen. Es gibt auch Bibliotheken wie node-fetch, die die fetch
-Funktion des Browsers zum Back-End portiert.
Andere Programmiersprachen bieten eine ähnliche Vielfalt an Bibliotheken, um dieses Problem zu lösen. Sieh dir weitere Tutorials zu Swift, Python und Ruby an. Außerdem empfehle ich dir Node.js-Schnellstart als Ort, an dem du dich mit deinen neuen Fähigkeiten austoben kannst.
Wie sendest du HTTP-Anfragen am liebsten? Du kannst mich gerne kontaktieren, um deine Erfahrungen zu teilen oder Fragen zu stellen.
- E-Mail: Sagnew@twilio.com
- Twitter: @Sagnewshreds
- Github: Sagnew
- Twitch (Live-Code-Streaming): Sagnewshreds
Verwandte Posts
Ähnliche Ressourcen
Twilio Docs
Von APIs über SDKs bis hin zu Beispiel-Apps
API-Referenzdokumentation, SDKs, Hilfsbibliotheken, Schnellstarts und Tutorials für Ihre Sprache und Plattform.
Ressourcen-Center
Die neuesten E-Books, Branchenberichte und Webinare
Lernen Sie von Customer-Engagement-Experten, um Ihre eigene Kommunikation zu verbessern.
Ahoy
Twilios Entwickler-Community-Hub
Best Practices, Codebeispiele und Inspiration zum Aufbau von Kommunikations- und digitalen Interaktionserlebnissen.