Zugriff auf den vollständigen Anforderungstext in Node.js mit Express
In Node.js wird Express verwendet, um POST-Anfragen zu verarbeiten und auf deren Textkörper zuzugreifen kann Herausforderungen mit sich bringen. Der bereitgestellte Code kann nicht den gesamten Anforderungstext abrufen, was zu Ausnahmen führt. Dieser Artikel untersucht Lösungen für dieses Problem und befasst sich mit der Möglichkeit, die Rohanforderung ohne Verwendung von express.bodyParser() zu erhalten.
Verwendung von Express Middleware
Ab Express v4. 16 kann die integrierte JSON-Middleware implementiert werden, um Anforderungstexte effektiv als JSON zu analysieren:
app.use(express.json())
Diese Middleware analysiert den Inhalt des Textkörpers automatisch in ein JavaScript-Objekt, auf das über die Eigenschaft req.body zugegriffen werden kann. Zum Beispiel:
app.post('/test', (req, res) => { res.json({ requestBody: req.body }) })
Rohanfrage ohne Middleware bearbeiten
Um die Rohanfrage ohne Middleware zu erhalten, kann ein alternativer Ansatz verwendet werden:
Verwendung der Eigenschaft „request.rawBody“:
Diese Eigenschaft bietet Zugriff auf den rohen, nicht analysierten Anforderungstext. Es ist jedoch erforderlich, die Limit-Option in der BodyParser-Middleware auf einen Wert zu setzen, der größer als die erwartete Länge des Körpers ist.
Verwendung einer benutzerdefinierten Middleware:
Eine benutzerdefinierte Middleware kann definiert werden, um eingehende Anfragen abzufangen und den Rohkörper abzurufen:
app.use((req, res, next) => { req.rawBody = ''; req.on('data', (chunk) => { req.rawBody += chunk; }); req.on('end', () => { next(); }); });
Es ist wichtig zu beachten, dass die manuelle Handhabung von Rohkörpern komplexer ist und zu Problemen führen kann Leistungsaufwand. Der Einsatz von Middleware wird aufgrund seiner Einfachheit und Effizienz generell empfohlen.
Das obige ist der detaillierte Inhalt vonSo greifen Sie mit Express auf den vollständigen Anforderungstext in Node.js zu: Ein Leitfaden zur Middleware und zum Umgang mit Rohanforderungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!