Es ist auch erwähnenswert, dass es eine sehr beliebte Wrapper-Bibliothek gibt. request.jsGithub.com/mikeal/request
Farzher
2
http Anfrage y async, Curl ist synchron.
E-Info128
2
@WHK so ist die Natur von node.js
slifty
Das große Problem, das ich dabei sehe, ist, dass Sie nicht einfach die URL eingeben und eine Antwort erhalten können. Sie müssen die URL in Einheiten trennen, um sie anzufordern. Aber vom Fluch gibt es wahrscheinlich einen Weg, es wäre einfach bequemer, dafür einen Befehl wie eine Locke zu verwenden.
Jānis Gruzis
15
Diese Seite kann Ihren cURLBefehl in die Anfrage von node.js konvertieren : curl.trillworks.com/#node
Maxim Mai
74
Das httpModul, mit dem Sie Server ausführen, wird auch zum Erstellen von Remoteanforderungen verwendet.
Hier ist das Beispiel in ihren Dokumenten:
var http = require("http");var options ={
host:'www.google.com',
port:80,
path:'/upload',
method:'POST'};var req = http.request(options,function(res){
console.log('STATUS: '+ res.statusCode);
console.log('HEADERS: '+ JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data',function(chunk){
console.log('BODY: '+ chunk);});});
req.on('error',function(e){
console.log('problem with request: '+ e.message);});// write data to request body
req.write('data\n');
req.write('data\n');
req.end();
Dies ist ein sehr niedriges Niveau im Vergleich zu dem vom OP geforderten lockenartigen Verhalten.
Dan Dascalescu
1
An alle: Heutzutage verwenden Sie request- npmjs.com/package/request - und stimmen Sie Nitishs Antwort unten zu, die die bessere Antwort im Jahr 2018 ist.
var request = require('request');
request('http://www.google.com',function(error, response, body){if(!error && response.statusCode ==200){
console.log(body)// Show the HTML for the Google homepage. }else{
console.log("Error "+response.statusCode)}})
Ich habe versucht, sowohl Node-Curl als auch Node-Libcurl zu installieren, aber beide geben mir die gleiche Meldung: "Die Header-Datei von Curl kann nicht gefunden werden." Dies ist während des node tools/retrieve-win-deps && node tools/generate-stubs && node-gyp rebuildSchritts. Irgendwelche Gedanken?
SaganRitual
@GreatBigBore Sie müssen das libcurl-Entwicklungspaket auf Ihrem Computer installiert haben. Wenn Sie beispielsweise Debian verwenden, können Sie es mit$ apt-get install libcurl4-openssl-dev
JCM
1
Kannst du die -LOption irgendwie nutzen?
Corvid
2
Ja: CURLOPT_FOLLOWLOCATION , mit node-libcurl werden Sie verwenden curl.setOpt( 'FOLLOWLOCATION', true );. Übrigens sind solche Fragen besser für den Issue-Tracker geeignet als dieser Kommentarbereich. ;)
JCM
23
BEARBEITEN:
Bei neuen Projekten verwenden Sie bitte keine Anfrage, da sich das Projekt jetzt im Wartungsmodus befindet und möglicherweise nicht mehr unterstützt wird
Stattdessen würde ich Axios empfehlen , die Bibliothek entspricht den neuesten Node-Standards, und es gibt einige verfügbare Plugins, um sie zu verbessern und Schein-Server-Antworten, automatische Wiederholungsversuche und andere Funktionen zu ermöglichen.
const axios = require('axios');// Make a request for a user with a given ID
axios.get('/user?ID=12345').then(function(response){// handle success
console.log(response);}).catch(function(error){// handle error
console.log(error);}).then(function(){// always executed});
var request = require('request');
request('http://www.google.com',function(error, response, body){if(!error && response.statusCode ==200){
console.log(body)// Show the HTML for the Google homepage.}})
Die obigen Beispiele funktionieren, gehen jedoch nicht so weit, dass sie sich wirklich mit einem Beispiel aus der realen Welt befassen (dh wenn Sie Daten verarbeiten, die in mehreren Blöcken eingehen. Eine Sache, die Sie sicherstellen müssen, ist, dass Sie einen "On-Chunk" -Handler haben, der dies tut Schieben Sie die Daten in ein Array (der schnellste Weg, dies in JS zu tun) und einen On-End-Handler, der sie alle zusammenfügt, damit Sie sie zurückgeben können.
Dies ist besonders erforderlich, wenn Sie mit großen Anforderungen (über 5000 Zeilen) arbeiten und der Server eine Reihe von Daten an Sie sendet.
Es gibt ein npm-Modul, um eine Curl-ähnliche Anfrage zu stellen. npm curlrequest .
Schritt 1: $npm i -S curlrequest
Schritt 2: In Ihrer Knotendatei
let curl = require('curlrequest')let options ={}// url, method, data, timeout,data, etc can be passed as options
curl.request(options,(err,response)=>{// err is the error returned from the api// response contains the data returned from the api})
Verwenden Sie das Request-Npm-Modul und nach dem Anruf
var request = require('request');
request('http://www.google.com',function(error, response, body){
console.log('error:', error);// Print the error if one occurred
console.log('statusCode:', response && response.statusCode);// Print the response status code if a response was received
console.log('body:', body);// Print the HTML for the Google homepage.});
Verwenden Sie für bewährte Methoden auch ein Winston Logger-Modul oder eine einfache console.log und führen Sie dann Ihre Anwendung wie folgt aus
npm start output.txt
Das Ergebnis des obigen Befehls generiert eine txt-Datei im Stammverzeichnis mit allen Daten, die Sie in console.log gedruckt haben
Am Ende habe ich die Grunt-Shell- Bibliothek benutzt.
Hier ist mein Quelltext für meine vollständig implementierte Grunt-Aufgabe für alle anderen, die über die Arbeit mit der EdgeCast-API nachdenken. In meinem Beispiel finden Sie, dass ich eine Grunt-Shell verwende, um den Curl-Befehl auszuführen, der das CDN löscht.
Dies geschah, nachdem ich stundenlang versucht hatte, eine HTTP-Anfrage für Node zum Laufen zu bringen. Ich konnte einen in Ruby und Python zum Laufen bringen, erfüllte aber nicht die Anforderungen dieses Projekts.
Verwendet reqclient , es ist ein kleines Client-Modul request, mit dem Sie alle Aktivitäten im cURL-Stil protokollieren können (optional für Entwicklungsumgebungen). Hat auch nette Funktionen wie URL- und Parameteranalyse, Authentifizierungsintegrationen, Cache-Unterstützung usw.
Wenn Sie beispielsweise ein Clientobjekt erstellen und eine Anforderung ausführen:
Die Eingabeaufforderung zeigt die Probleme an - falscher Benutzername / Pass; schlechte Anfrage usw.
--URL Datenbank- / Serverspeicherort (ich habe einfache kostenlose Cloudant-Datenbank verwendet) --user ist der Benutzername des Authentifizierungsteils: pass, den ich über die API eingegeben habe pass -X definiert, welcher Befehl aufgerufen werden soll (PUT, GET, POST, DELETE) -H Inhaltstyp - Bei Cloudant handelt es sich um eine Dokumentendatenbank, in der JSON verwendet wird. - Dateninhalt selbst sortiert nach JSON
Request npm module Request Node Moulde ist gut zu verwenden, verfügt über Optionseinstellungen für Get / Post Request und ist auch in Produktionsumgebungen weit verbreitet.
Sie können das Modul request npm verwenden. Super einfach zu bedienen. Die Anfrage soll die einfachste Möglichkeit sein, http-Anrufe zu tätigen. Es unterstützt HTTPS und folgt standardmäßig Weiterleitungen.
var request = require('request');
request('http://www.google.com',function(error, response, body){
console.log('error:', error);// Print the error if one occurred
console.log('statusCode:', response && response.statusCode);// Print the response status code if a response was received
console.log('body:', body);// Print the HTML for the Google homepage.});
http.request
...Antworten:
Ein vollständiges Beispiel finden Sie in der Dokumentation zum HTTP-Modul:
https://nodejs.org/api/http.html#http_http_request_options_callback
quelle
request.js
Github.com/mikeal/requestcURL
Befehl in die Anfrage von node.js konvertieren : curl.trillworks.com/#nodeDas
http
Modul, mit dem Sie Server ausführen, wird auch zum Erstellen von Remoteanforderungen verwendet.Hier ist das Beispiel in ihren Dokumenten:
quelle
request
- npmjs.com/package/request - und stimmen Sie Nitishs Antwort unten zu, die die bessere Antwort im Jahr 2018 ist.Sie können das Anforderungsmodul einfach verwenden:
https://www.npmjs.com/package/request
Beispielcode:
quelle
Da es so aussieht, als wäre
node-curl
es tot, habe ich es gegabelt, umbenannt und modifiziert, um es besser zu machen und unter Windows zu kompilieren.node-libcurl
Anwendungsbeispiel:
Perform ist asynchron
und es gibt derzeit keine Möglichkeit, es synchron zu verwenden (und wird es wahrscheinlich nie haben).Es ist immer noch in Alpha, aber das wird sich bald ändern, und Hilfe wird geschätzt.Jetzt ist es möglich,
Easy
handle direkt für Synchronisierungsanforderungen zu verwenden, Beispiel:Auch das Projekt ist jetzt stabil!
quelle
node tools/retrieve-win-deps && node tools/generate-stubs && node-gyp rebuild
Schritts. Irgendwelche Gedanken?$ apt-get install libcurl4-openssl-dev
-L
Option irgendwie nutzen?curl.setOpt( 'FOLLOWLOCATION', true );
. Übrigens sind solche Fragen besser für den Issue-Tracker geeignet als dieser Kommentarbereich. ;)BEARBEITEN:
Bei neuen Projekten verwenden Sie bitte keine Anfrage, da sich das Projekt jetzt im Wartungsmodus befindet und möglicherweise nicht mehr unterstützt wird
https://github.com/request/request/issues/3142
Stattdessen würde ich Axios empfehlen , die Bibliothek entspricht den neuesten Node-Standards, und es gibt einige verfügbare Plugins, um sie zu verbessern und Schein-Server-Antworten, automatische Wiederholungsversuche und andere Funktionen zu ermöglichen.
https://github.com/axios/axios
Oder mit async / await:
Normalerweise verwende ich REQUEST, einen vereinfachten, aber leistungsstarken HTTP-Client für Node.js.
https://github.com/request/request
Es ist auf NPM
npm install request
Hier ist ein Anwendungsbeispiel:
quelle
Wenn Sie wirklich ein Curl-Äquivalent benötigen, können Sie es versuchen
node-curl
Sie müssen wahrscheinlich hinzufügen
libcurl4-gnutls-dev
.quelle
Die obigen Beispiele funktionieren, gehen jedoch nicht so weit, dass sie sich wirklich mit einem Beispiel aus der realen Welt befassen (dh wenn Sie Daten verarbeiten, die in mehreren Blöcken eingehen. Eine Sache, die Sie sicherstellen müssen, ist, dass Sie einen "On-Chunk" -Handler haben, der dies tut Schieben Sie die Daten in ein Array (der schnellste Weg, dies in JS zu tun) und einen On-End-Handler, der sie alle zusammenfügt, damit Sie sie zurückgeben können.
Dies ist besonders erforderlich, wenn Sie mit großen Anforderungen (über 5000 Zeilen) arbeiten und der Server eine Reihe von Daten an Sie sendet.
Hier ist ein Beispiel in einem meiner Programme (Coffeescript): https://gist.github.com/1105888
quelle
Wie wäre es zum Beispiel mit https://github.com/joyent/node/wiki/modules#wiki-tcp . Eine sehr schnelle Zusammenfassung =>
quelle
Es gibt ein npm-Modul, um eine Curl-ähnliche Anfrage zu stellen.
npm curlrequest
.Schritt 1:
$npm i -S curlrequest
Schritt 2: In Ihrer Knotendatei
Zum weiteren Lesen und Verstehen npm curlrequest
quelle
Verwenden Sie das Request-Npm-Modul und nach dem Anruf
Verwenden Sie für bewährte Methoden auch ein Winston Logger-Modul oder eine einfache console.log und führen Sie dann Ihre Anwendung wie folgt aus
Das Ergebnis des obigen Befehls generiert eine txt-Datei im Stammverzeichnis mit allen Daten, die Sie in console.log gedruckt haben
quelle
Am Ende habe ich die Grunt-Shell- Bibliothek benutzt.
Hier ist mein Quelltext für meine vollständig implementierte Grunt-Aufgabe für alle anderen, die über die Arbeit mit der EdgeCast-API nachdenken. In meinem Beispiel finden Sie, dass ich eine Grunt-Shell verwende, um den Curl-Befehl auszuführen, der das CDN löscht.
Dies geschah, nachdem ich stundenlang versucht hatte, eine HTTP-Anfrage für Node zum Laufen zu bringen. Ich konnte einen in Ruby und Python zum Laufen bringen, erfüllte aber nicht die Anforderungen dieses Projekts.
quelle
Verwendet reqclient , es ist ein kleines Client-Modul
request
, mit dem Sie alle Aktivitäten im cURL-Stil protokollieren können (optional für Entwicklungsumgebungen). Hat auch nette Funktionen wie URL- und Parameteranalyse, Authentifizierungsintegrationen, Cache-Unterstützung usw.Wenn Sie beispielsweise ein Clientobjekt erstellen und eine Anforderung ausführen:
Es wird in der Konsole ungefähr so protokolliert:
Die Anfrage gibt ein Promise- Objekt zurück, sodass Sie damit umgehen müssen
then
undcatch
was mit dem Ergebnis zu tun ist.reqclient
ist mit npm verfügbar , können Sie das Modul installieren mit :npm install reqclient
.quelle
Ich hatte ein Problem beim Senden von POST-Daten von IOT RaspberryPi an die Cloud-Datenbank, aber nach Stunden gelang es mir, diese zu korrigieren.
Ich habe dazu die Eingabeaufforderung verwendet.
Die Eingabeaufforderung zeigt die Probleme an - falscher Benutzername / Pass; schlechte Anfrage usw.
--URL Datenbank- / Serverspeicherort (ich habe einfache kostenlose Cloudant-Datenbank verwendet) --user ist der Benutzername des Authentifizierungsteils: pass, den ich über die API eingegeben habe pass -X definiert, welcher Befehl aufgerufen werden soll (PUT, GET, POST, DELETE) -H Inhaltstyp - Bei Cloudant handelt es sich um eine Dokumentendatenbank, in der JSON verwendet wird. - Dateninhalt selbst sortiert nach JSON
quelle
Request npm module Request Node Moulde ist gut zu verwenden, verfügt über Optionseinstellungen für Get / Post Request und ist auch in Produktionsumgebungen weit verbreitet.
quelle
Vielleicht möchten Sie versuchen, so etwas zu verwenden
quelle
Sie können versuchen, die POSTMAN Chrome-App für Ihre Anfrage zu verwenden, und von dort aus den Knoten-JS-Code generieren
quelle
Sie können das Modul request npm verwenden. Super einfach zu bedienen. Die Anfrage soll die einfachste Möglichkeit sein, http-Anrufe zu tätigen. Es unterstützt HTTPS und folgt standardmäßig Weiterleitungen.
quelle