cURL Gegenwert in Node.js?
Ich bin auf der Suche um mithilfe von Informationen aus einem HTTP-request mit Node.js (d.h. Aufruf einer remote-web-service-und echo-Antwort an den client).
In PHP hätte ich cURL verwendet, dies zu tun. Was ist die beste Praxis in Knoten?
http.request
...- Das problem bei all diesen Lösungen ist, dass Sie benötigen, Kontrolle von cors!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Finden Sie in der Dokumentation für das HTTP-Modul für ein vollständiges Beispiel:
https://nodejs.org/api/http.html#http_http_request_options_callback
request.js
github.com/mikeal/requestcURL
Befehl node.js request: curl.trillworks.com/#nodeDen
http
Modul, das Sie verwenden, um Server wird auch verwendet, um remote-Anforderungen.Hier ist das Beispiel in den docs:
request
- npmjs.com/package/request - und upvote Nitish Antwort, unten, das ist die bessere Antwort in 2018.können Sie ganz einfach anfordern Modul:
https://www.npmjs.com/package/request
Beispielcode:
Da sieht aus wie
- Knoten-curl
ist tot, ich habe die Gabel-Sie, umbenannt und modifiziert werden, mehr curl zu kompilieren unter Windows.- Knoten-libcurl
Beispiel:
Führen wird, async,
und es gibt keine Möglichkeit, es zu benutzen synchrone derzeit (und wird wahrscheinlich auch nie haben).Es ist noch in der alpha, aber das wird sich bald ändern, und Hilfe ist willkommen.Es ist nun möglich, verwenden Sie
Easy
Griff direkt für sync-Anfragen, Beispiel:Auch, das Projekt ist mittlerweile stabil!
node tools/retrieve-win-deps && node tools/generate-stubs && node-gyp rebuild
Schritt. Irgendwelche Gedanken?$ apt-get install libcurl4-openssl-dev
-L
option irgendwie?curl.setOpt( 'FOLLOWLOCATION', true );
. Btw, wie Fragen, die sind besser geeignet, um die issue-tracker als dieser Kommentar-Abschnitt. 😉EDIT:
Für neue Projekte bitten wir Sie, die Anfrage, da nun das Projekt in maitainance-Modus, und werden schließlich veraltet
https://github.com/request/request/issues/3142
Stattdessen würde ich empfehlen Axios, die Bibliothek ist im Einklang mit Knoten neuesten standards, und es gibt einige der verfügbaren plugins zu erweitern, sodass mock-server Antworten, automatische Wiederholungen und andere Funktionen.
https://github.com/axios/axios
Oder mit async /await:
Normalerweise verwende ich ANFRAGE, es ist eine einfache aber leistungsstarke HTTP-client für Node.js
https://github.com/request/request
Seine auf NPM
npm install request
Hier ein Verwendungs-Beispiel:
Den oben genannten Beispielen funktionieren, aber nicht so weit gehen, die wirklich viel mit einer realen Welt-Beispiel (z.B., wenn Sie Daten verarbeiten, kommen in mehreren Blöcken. Eine Sache, die Sie benötigen, um sicherzustellen, dass Sie haben ein 'am Stück' - handler, die den push der Daten in ein array (der Schnellste Weg, dies zu tun in JS) und 'am Ende' - handler, der Sie verbindet alle zusammen, also können Sie es zurück.
Dies ist vor allem dann notwendig, wenn mit dem Sie arbeiten, große Anfragen (5000+ Zeilen), und der server sendet eine Reihe von Daten zu Ihnen.
Hier ist ein Beispiel in einem meiner Programme (coffeescript):
https://gist.github.com/1105888
gut, wenn Sie wirklich brauchen, eine curl-äquivalent können Sie versuchen,
- Knoten-curl
werden Sie wahrscheinlich benötigen, um hinzuzufügen
libcurl4-gnutls-dev
.Wie zum Beispiel https://github.com/joyent/node/wiki/modules#wiki-tcp. Eine sehr kurze Zusammenfassung =>
Es ist npm-Modul, um eine LOCKE wie Anfrage
npm curlrequest
.Schritt 1:
$npm i -S curlrequest
Schritt 2: Im Knoten file
Für die weitere Lektüre und Verständnis, npm curlrequest
Anforderung npm-Modul und nach Anruf
Beste Praxis auch einige winston - logger-Modul oder andere einfache Konsole.einloggen und dann starten Sie Ihre Anwendung, wie
Ergebnis der oben genannten Befehl generiert eine txt-Datei auf root mit allen Daten, die Sie gedruckt haben, in Konsole.melden Sie
Landete ich mit der grunt-shell Bibliothek.
Hier ist meine wesentliche Quelle für meine vollständig umgesetzt Grunt-task für jemand anderen zu denken, über die Arbeit mit der EdgeCast API. Sie finden in meinem Beispiel verwende ich einen grunt-shell ausführen der curl-Befehl löscht die CDN.
War, landete ich nach stundenlang versucht, um eine HTTP-Anforderung an der Arbeit innerhalb der Knoten. Ich war in der Lage, eins zu bekommen arbeiten in Ruby und Python, aber nicht den Anforderungen von diesem Projekt.
Verwendet reqclient, es ist ein kleines client-Modul auf der Oberseite des
request
erlaubt, dass Sie log werden alle Aktivitäten mit cURL-Stil (optional, für Entwicklungsumgebungen). Hat auch nette features wie URL-und Parameter-Analyse, Authentifizierung, Integration, Unterstützung für Caches, etc.Zum Beispiel, wenn Sie erstellen Sie ein client-Objekt eine tun eine Anfrage:
Wird es log in der Konsole etwas wie dieses:
Den Antrag zurück Versprechen Objekt, so dass Sie haben, um mit
then
undcatch
was tun mit dem Ergebnis.reqclient
erhältlich mit npm, können Sie installieren das Modul mit:npm install reqclient
.Hatte ich ein problem beim senden von POST-Daten auf cloud-DB von IOT RaspberryPi, aber nach Stunden habe ich es geschafft, um es gerade.
Ich verwendet Eingabeaufforderung zu tun.
Eingabeaufforderung zeigt die Probleme - falsche Benutzername/pass; bad request usw.
--URL-Datenbank - /server-Standort (ich habe einfach frei Cloudant DB)
--Benutzer wird die Authentifizierung Teil Benutzername:pass ich trat durch API übergeben
-X legt fest, welcher Befehl call (PUT,GET,POST,DELETE)
-H content-type - Cloudant ist über die Dokument-Datenbank, die JSON verwendet wird
--Daten Inhalt selbst sortiert als JSON
Anfrage npm-Modul Anfrage-Knoten moulde ist gut zu verwenden, haben Sie Optionen Einstellungen für get/post-request plus es ist weit verbreitet in der Produktionsumgebung zu.
Möchten Sie vielleicht versuchen Sie so etwas wie dieses
Können Sie versuchen, mit BRIEFTRÄGER Chrome-app für Ihre Anforderung, und Sie können die Generierung node-js-code von dort
Können Sie anfordern npm-Modul .
Super einfach zu bedienen.
Anfrage ist entworfen, um die einfachste Weise möglich zu machen, http-Aufrufe. Es unterstützt HTTPS und folgt Weiterleitungen standardmäßig.