/ / Parsowanie JSON w Expressie bez BodyParser - json, node.js, express, żądanie

Parsowanie JSON w Expressie bez BodyParser - json, node.js, express, request

Próbuję napisać to na prostym, ekspresowym serwerzeprzyjmuje przychodzący JSON (POST), analizuje JSON i przypisuje do treści żądania. Połów jest taki, że nie mogę używać bodyparsera. Poniżej znajduje się mój serwer z prostą funkcją oprogramowania pośredniego przekazywaną do app.use

Problem: za każdym razem, gdy wysyłam pozorne żądania POST do mojego serwera z superagentem (pakiet npm, który pozwala wysyłać JSON przez terminal), mój czas oczekiwania serwera. Napisałem serwer HTTP w podobny sposób używając req.on ("data") ... więc jestem zakłopotany.

const express = require("express");
const app = express();

function jsonParser(req, res, next) {
res.writeHead(200, {"Content-Type:":"application/json"});
req.on("data", (data, err) => {
if (err) res.status(404).send({error: "invalid json"});
req.body = JSON.parse(data);
});
next();
};

app.use(jsonParser);
app.post("/", (req, res) => {
console.log("post request logging message...");
});

app.listen(3000, () => console.log("Server running on port 3000"));

Odpowiedzi:

18 dla odpowiedzi № 1

Myślę, że problem polega na tym, aby uzyskać rawBody w ekspresowym tempie.

Takie jak to:

app.use(function(req, res, next){
var data = "";
req.on("data", function(chunk){ data += chunk})
req.on("end", function(){
req.rawBody = data;
req.jsonBody = JSON.parse(data);
next();
})
})

I musisz złapać błąd, gdy analizujesz ciąg do jsona i musisz go ocenić Content-type z Req.

Powodzenia.