Użyłem bodyParser.json () jako oprogramowania pośredniego z express i ostatnio zastąpiłem go tym kodem:
//gets any json object and put them in req.body
app.use((req, res, next) => {
let lang = req.acceptsLanguages()[0];
const decoder = new StringDecoder("utf-8");
req.on("data", function(data) {
try {
req.body = JSON.parse(decoder.write(data));
next()
} catch (ex) {
res.status(400).send(translator(lang, "entry.error.input.malformed"));
}
});
});
Czy muszę używać bodyParser i dodawać bibliotekę do mojego projektu? lub mój niestandardowy kod jest wystarczający do przeanalizowania i wstrzyknięcia surowych danych jako obiektu Json w pytaniu ??
Odpowiedzi:
1 dla odpowiedzi № 1Twoje niestandardowe oprogramowanie pośrednie nie wydaje się właściwe, używałbym
app.use((req, res, next) => {
let lang = req.acceptsLanguages()[0];
let data = "";
req.on("data", chunk => data += chunk);
req.on("end", () => {
try {
req.body = JSON.parse(data);
next()
} catch (ex) {
res.status(400).send(translator(lang, "entry.error.input.malformed"));
}
});
});
I tak, jeśli tego oczekujesz, wystarczy, że wszystkie żądania przychodzące na serwer będą typu JSON. bodyparser zasadniczo robi to samo, poza tym, że obsługuje wiele innych przypadków