express req.body 返回一个空的 json object
express req.body is returing an empty json object
我已经阅读了所有其他 post 并且我已经验证了 none 中任何一个的解决方案都解决了我的问题。在失眠中,我将内容类型 header 设置为“application/json”,并且在我的任何路由之前应用 express.json() 中间件。最令人沮丧的是 body 在我的 /register 路由中不是空的,但它总是在我的 /login 路由中。我什至尝试使用“router.get('/', express.json(), async (req, res) => {”将中间件直接放入路由中,但无济于事。也当我将路线设置为 post 时,我收到代码为 404 的“无法获取/注册”,但当它是“获取”路线时却没有。在我的注册路线上,同时有一条获取和 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;
Image of post result after making the route a post route
天哪,谢谢你@Phil,他说的 404 代码意味着 post 仍在尝试执行获取请求,这让我突然想起很久以前我在我网站 publichtml 文件夹中的 apps 文件夹。意思不是调用 express,而是将我的请求解释为 get,我相信是因为在删除文件夹后,我能够使用端点 /login 而不是 /logins,它起作用了,是解决这个问题的关键!
我已经阅读了所有其他 post 并且我已经验证了 none 中任何一个的解决方案都解决了我的问题。在失眠中,我将内容类型 header 设置为“application/json”,并且在我的任何路由之前应用 express.json() 中间件。最令人沮丧的是 body 在我的 /register 路由中不是空的,但它总是在我的 /login 路由中。我什至尝试使用“router.get('/', express.json(), async (req, res) => {”将中间件直接放入路由中,但无济于事。也当我将路线设置为 post 时,我收到代码为 404 的“无法获取/注册”,但当它是“获取”路线时却没有。在我的注册路线上,同时有一条获取和 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;
Image of post result after making the route a post route
天哪,谢谢你@Phil,他说的 404 代码意味着 post 仍在尝试执行获取请求,这让我突然想起很久以前我在我网站 publichtml 文件夹中的 apps 文件夹。意思不是调用 express,而是将我的请求解释为 get,我相信是因为在删除文件夹后,我能够使用端点 /login 而不是 /logins,它起作用了,是解决这个问题的关键!