Wie kann ich eine ausgehende HTTP-POST-Anfrage mit Daten in node.js stellen?
node.js
http
post
httprequest
Kennzeichen
quelle
quelle
node-fetch
eine Implementierung der nativenfetch
JavaScript-Methode verwenden, um HTTP-Anforderungen zu stellen.Antworten:
Hier ist ein Beispiel für die Verwendung von node.js, um eine POST-Anforderung an die Google Compiler-API zu senden:
Ich habe den Code aktualisiert, um zu zeigen, wie Daten aus einer Datei anstelle der fest codierten Zeichenfolge veröffentlicht werden. Dazu wird der
fs.readFile
Befehl async verwendet, der den tatsächlichen Code nach einem erfolgreichen Lesevorgang veröffentlicht. Wenn ein Fehler vorliegt, wird er ausgelöst, und wenn keine Daten vorhanden sind, wird der Prozess mit einem negativen Wert beendet, um einen Fehler anzuzeigen.quelle
querystring.stringify()
verschachtelte Objekte nicht unterstütztqs.stringify()
werden. Verwenden Sie sie stattdessen.Content-Length
ist Bytes und nicht unbedingt Stringlänge (UTF-16 usw.). Die VerwendungBuffer.byteLength(data)
wird immer korrekt sein.querystring.stringify
Ihr eigenes Datenobjekt sein, nicht der Junk, der in dieser Antwort angezeigt wird (was kann für dateibasierte Objekte nützlich sein?). Ich war ewig dabei ... stackoverflow.com/questions/9768192/… lieferte meine KomplettlösungDies wird viel einfacher, wenn Sie die Anforderungsbibliothek verwenden.
Abgesehen von der Bereitstellung einer netten Syntax erleichtert es JSON-Anfragen, erledigt das Signieren (für Twitter usw.), kann mehrteilige Formulare (z. B. zum Hochladen von Dateien) und Streaming erstellen.
Verwenden Sie zum Installieren der Anforderung den Befehl
npm install request
quelle
Sie können die Anforderungsbibliothek verwenden. https://www.npmjs.com/package/request
So veröffentlichen Sie JSON-Daten:
So veröffentlichen Sie XML-Daten:
quelle
Ich benutze Restler und Needle für Produktionszwecke. Sie sind beide viel leistungsfähiger als native httprequest. Es ist möglich, mit Basisauthentifizierung, speziellem Header-Eintrag oder sogar Upload / Download-Dateien anzufordern.
Die Post / Get-Operation ist auch viel einfacher zu verwenden als rohe Ajax-Aufrufe mit httprequest.
quelle
Einfach und abhängigkeitsfrei. Verwendet ein Versprechen, damit Sie das Ergebnis abwarten können. Es gibt den Antworttext zurück und überprüft den Antwortstatuscode nicht.
Verwendungszweck:
quelle
write
Methodereq,write()
verwendet?Sie können auch Requestify verwenden , einen wirklich coolen und einfachen HTTP-Client, den ich für nodeJS + geschrieben habe und der das Caching unterstützt.
Gehen Sie einfach wie folgt vor:
quelle
Update 2020:
Ich habe phin wirklich genossen - den ultraleichten Node.js HTTP-Client
Es kann auf zwei verschiedene Arten verwendet werden. Einer mit Versprechen (Async / Await) und der andere mit traditionellen Rückrufstilen.
Installation über:
npm i phin
Direkt aus der README mit
await
:Unversprechener (Rückruf-) Stil:
Ab 2015 gibt es eine Vielzahl unterschiedlicher Bibliotheken, die dies mit minimaler Codierung erreichen können. Ich bevorzuge elegante, leichte Bibliotheken für HTTP-Anfragen, es sei denn, Sie benötigen unbedingt die Kontrolle über das HTTP-Material auf niedriger Ebene.
Eine solche Bibliothek ist Unirest
Verwenden Sie zum Installieren
npm
.$ npm install unirest
Und auf das
Hello, World!
Beispiel, an das jeder gewöhnt ist.Extra:
Viele Leute schlagen auch die Verwendung von Anfragen vor [2]
Es sollte erwähnenswert sein, dass hinter den Kulissen
Unirest
dierequest
Bibliothek verwendet wird.Unirest bietet Methoden für den direkten Zugriff auf das Anforderungsobjekt.
Beispiel:
quelle
quelle
Es stehen Dutzende von Open-Source-Bibliotheken zur Verfügung, mit denen Sie eine HTTP-POST-Anforderung in Node erstellen können.
1. Axios (empfohlen)
2. Nadel
3. Anfrage
4. Natives HTTPS-Modul
Weitere Informationen finden Sie in diesem Artikel .
quelle
Dies ist der einfachste Weg, um eine Anfrage zu stellen: Verwenden des Moduls 'Anfrage'.
Befehl zum Installieren des Anforderungsmoduls:
Beispielcode:
Sie können auch das integrierte 'http'-Modul von Node.js verwenden, um Anfragen zu stellen.
quelle
Ich mag die Einfachheit von Superagent ( https://github.com/visionmedia/superagent ). Gleiche API auf Knoten und Browser.
Es gibt auch Node-Fetch ( https://www.npmjs.com/package/node-fetch ), dessen API mit
fetch
den Browsern übereinstimmt. Dies erfordert jedoch eine manuelle Codierung der Abfragezeichenfolge, verarbeitet Inhaltstypen nicht automatisch oder so macht jeder der anderen Arbeit Superagent.quelle
Wenn Sie nach vielversprechenden HTTP-Anfragen suchen, erledigt axios seine Aufgabe gut.
ODER
quelle
So veröffentlichen Sie Rest- / JSON-Anforderungen
Wir können einfach das Anforderungspaket verwenden und die Werte, die wir senden müssen, in der Json-Variablen speichern.
Installieren Sie zuerst das erforderliche Paket in Ihrer Konsole mit der npm-Installationsanforderung --save
quelle
Ich habe ein Video gefunden, in dem erklärt wird, wie dies erreicht werden kann: https://www.youtube.com/watch?v=nuw48-u3Yrg
Es verwendet das Standardmodul "http" zusammen mit den Modulen "querystring" und "stringbuilder". Die Anwendung nimmt zwei Zahlen (unter Verwendung von zwei Textfeldern) von einer Webseite und gibt beim Senden die Summe dieser beiden zurück (zusammen mit dem Beibehalten der Werte in den Textfeldern). Dies ist das beste Beispiel, das ich irgendwo anders finden könnte.
quelle
Das ist meine Lösung für
POST
undGET
.Über die
Post
Methode:Wenn der Body ein JSON-Objekt ist, ist es wichtig, ihn zu deserialisieren
JSON.stringify
und möglicherweise denContent-Lenght
Header entsprechend festzulegen:bevor Sie es an die Anfrage schreiben:
Über beide
Get
undPost
Methoden:Das
timeout
kann alssocket
Unterbrechung auftreten, daher müssen Sie den Handler wie folgt registrieren:während der
request
Handler istIch empfehle dringend, beide Handler zu registrieren.
Der Antworttext ist aufgeteilt, daher müssen Sie Teile am
data
Handler zusammenfassen:An der
end
derbody
wird die gesamte Antwort Körper enthalten:Es ist sicher, mit einem
try
... catchthe
JSON.parse` zu verpacken, da Sie nicht sicher sein können, dass es sich tatsächlich um einen gut formatierten JSON handelt, und es zum Zeitpunkt der Anforderung keine Möglichkeit gibt, sich dessen sicher zu sein.Modul:
SimpleAPI
Verwendungszweck:
quelle
Nachdem ich viel Mühe hatte, ein Dienstprogramm auf niedriger Ebene zu erstellen, um den Beitrag zu bearbeiten und Anfragen für mein Projekt zu erhalten, beschloss ich, meine Bemühungen hier zu veröffentlichen. In Anlehnung an die akzeptierte Antwort finden Sie hier einen Ausschnitt zum Erstellen von http- und https-POST-Anforderungen zum Senden von JSON-Daten.
quelle
Oder Sie könnten diese Bibliothek verwenden:
quelle
request
Bibliothek ist veraltet.Axios ist ein vielversprechender HTTP-Client für den Browser und Node.js. Mit Axios ist es einfach, asynchrone HTTP-Anforderungen an REST-Endpunkte zu senden und CRUD-Operationen auszuführen. Es kann in einfachem JavaScript oder mit einer Bibliothek wie Vue oder React verwendet werden.
quelle
Veröffentlichen eines weiteren axios-Beispiels für eine axios.post-Anforderung, die zusätzliche Konfigurationsoptionen und benutzerdefinierte Header verwendet.
quelle
Durch Verwendung der Anforderungsabhängigkeit .
Einfache Lösung:
quelle
request
kommen aus?Request-Promise
Bietet eine vielversprechende Antwort. Andere http-Antwortcodes als 2xx führen dazu, dass das Versprechen abgelehnt wird. Dies kann durch Setzen von options.simple = false überschrieben werdenquelle