表达要求.Body返回一个空json对象



我已经阅读了所有其他帖子,并且我已经验证了其中任何一个解决方案都不能解决我的问题。在insomnia中,我将内容类型header设置为"application/json"我在任何路由之前应用express.json()中间件。最令人沮丧的是,在my/register路由中,body不是空的,但它总是在my/login路由中。我甚至尝试将中间件直接放入路由"router。Get ('/', express.json(), async (req, res) =>{";但无济于事。此外,当我使路线张贴时,我得到一个"不能get/register";代码404,但不是当它是"get"路线。在我的注册路由上有一个get和post路由,所以我无法理解为什么它与登录路由有任何不同,特别是因为我通过复制和粘贴登录路由js文件来注册路由。下面是应用程序

的代码
const express = require("express"),
bodyParser = require('body-parser'),
rta = require('./RTAuth.js'),
mysql = require('mysql'),
app = express(),
port = 8080;
//app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
//app.use(bodyparser.urlencoded({ extended : true }));
//app.use(express.json({ limit: "200mb" }));
app.use(function(req,res, next) {
res.locals.loginDB = mysql.createConnection({
host: "localhost",
user: "removed before posting",
database: "removed before posting",
password: "removed before posting"
});
res.locals.rta = rta;
next();
});

//ImportRoutes
const loginRouter = require("./routes/login");
const registerRouter = require("./routes/register");
//Setup ImportRoutes
app.use("/AuthTest/login", loginRouter);
app.use("/AuthTest/register", registerRouter);

app.listen(port, () => {console.log("its alive!")});

我包含了我试过的注释掉的代码。现在这里是有问题的路由,直到它失败的部分,所以忽略return后面缺少的括号,其余部分无关紧要,因为它的流被return语句切断了。

const express = require("express");
//Setup express server routers
const router = express.Router();
//On get request
router.get('/', async (req, res) => {
var test = req.body;
res.status(200).send({
success: false,
message: "Test.",
body: test,
headers: req.headers
});
return;

将路由设置为post路由后的post结果图像

OMG谢谢你@Phil,他说的404代码意味着帖子仍在尝试做一个get请求,这让我突然想起很久以前我创建了一个名为"login"在应用程序文件夹在我的网站publichtml文件夹。意思不是调用express,而是将我的请求解释为get,我相信是因为在删除文件夹后,我能够使用端点/login而不是/login,这是解决这个问题的关键!

最新更新