Node.js - Raw Anfrage Körper mit Express
Verwenden, wenn ich Ausdrücken, und mein code ist:
app.use(express.bodyParser());
Wie kann ich die raw-request-body?
InformationsquelleAutor der Frage haitao_wu | 2013-09-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Edit 2: Version 1.15.2 von der Körper-parser-Modul stellt raw-Modusdas gibt der Körper als Puffer. Standardmäßig, es auch automatisch verarbeitet deflate-und gzip-Dekomprimierung. Beispiel:
Standardmäßig die
options
- Objekt verfügt über die folgenden Standardeinstellungen:Wenn Sie möchten, dass Ihre raw-parser zum Parsen anderen MIME-Typen andere als
application/octet-stream
wird, müssen Sie ihn hier ändern. Es unterstützt auch Jokerzeichen wie*/*
oder*/application
.Hinweis: folgende Antwort ist für Versionen vor Express 4, wo-middleware wurde noch im Bundle mit dem framework. Das moderne äquivalent ist die Körper-parser - Modul, das GESONDERT installiert werden muss.
Den
rawBody
Eigenschaft im Express war mal vorhanden, ist aber entfernt, da version 1.5.1. Die roh-Wunsch-Körper, die Sie haben, um in einige middleware, bevor Sie mit der bodyParser. Lesen Sie auch einen GitHub-Diskussion hier.Dass die middleware liest aus den aktuellen Daten-stream und speichern Sie es in den
rawBody
- Eigenschaft der Anforderung. Sie können dann auf den rohen Körper wie diese:Edit: Es scheint, dass diese Methode und bodyParser verweigern, zu koexistieren, weil man verbrauchen die Anfrage-stream, bevor die anderen, die zu je einer Sekunde nie Feuer
end
so nie aufrufennext()
und hängen Ihre Anwendung.Die einfachste Lösung wäre wahrscheinlich, ändern Sie die Quelle der bodyParser, die Sie finden würde, auf Zeile 57 von Connect JSON-parser. Dies ist, was die modifizierte version Aussehen würde.
Würden Sie finden die Datei an diesem Speicherort:
/node_modules/express/node_modules/connect/lib/middleware/json.js
.InformationsquelleAutor der Antwort hexacyanide
Habe ich eine Lösung, die spielt schön mit bodyParser, mit der
verify
Rückruf in bodyParser. In diesem code verwende ich es um ein sha1-Hash des Inhalts und auch immer das raw Körper.Ich bin neu in Node.js und express.js (gestern angefangen, wörtlich!) also würde ich gerne hören Kommentare auf diese Lösung.
InformationsquelleAutor der Antwort Tiago A.
VORSICHTIG SEIN mit den anderen Antworten, da Sie nicht richtig spielen mit bodyParser wenn Sie auf der Suche für die Unterstützung von json, urlencoded, etc. Um es an die Arbeit mit bodyParser sollten Sie den Zustand Ihrer handler nur registrieren auf der
Content-Type
header(s), die Sie interessieren, genau wie bodyParser selbst.Die roh-Karosserie Inhalt einer Anfrage mit
Content-Type: "text/plain"
inreq.rawBody
Sie tun können:InformationsquelleAutor der Antwort nortron
Dies ist eine variation hexacyanide die Antwort von oben. Diese middleware übernimmt auch die 'data' - Ereignis aber nicht warten, bis die Daten konsumiert werden, vor dem Aufruf von 'next'. Diese Weise sowohl dieser middleware und bodyParser koexistieren, Sie verbrauchen den Strom in parallel.
InformationsquelleAutor der Antwort oferei
Diese Lösung bei mir funktioniert:
Wenn ich die Lösung mit
req.on('data', function(chunk) { });
es funktioniert nicht auf chunked-request-body.InformationsquelleAutor der Antwort Pavel Evstigneev