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 № 1Myś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.