express.json()是将请求对象识别为JSON对象?
app.js
var express = require('express');
var cookieParser = require('cookie-parser');
var session = require('express-session');
var helloRouter = require('./routes/hello');
var app = express();
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
var session_opt={
secret:'keyboard cat',
resave:false,
saveUninitialize:false,
cookie:{maxAge:60*60*1000}
};
app.use(session(session_opt));
app.use('/hello',helloRouter);
module.exports = app;
hello.js
var express= require('express');
var router = express.Router();
router.get('/',(req,res,next)=>{
var msg = 'write something';
if(req.session.message != undefined){
msg = "Last Message"+req.session.message;
}
var data={
title:'Hello',
content:msg
};
res.render('hello',data);
});
router.post('/post',(req,res,next)=>{
console.log(req.body);
var msg = req.body['message'];
req.session.message=msg;
var data={
title:'Hello!',
content:"Last Message"+req.session.message
};
res.render('hello',data);
});
module.exports = router;
hello.ejs
<form action="/hello/post" method="post">
<input type="text" name="message">
<input type="submit" value="Submit">
</form>
我理解express.json()将从this做什么(No.5 a)然后我在hello.js中使用console.log(req.body)调试上面的编码
当我提交表格时,显示了这一点
使用express.json()
[Object: null prototype] { message: 'ABC' }
不使用express.json()(我从app.js中删除了它)
[Object: null prototype] { message: 'ABC' }
所以没有什么不同。使用express.json()的目的是什么。即使我不知道我对express.json()的理解是否正确。
回答如下:您没有提交JSON,因此它什么都不做。
你的req.body
来自express.urlencoded()
,它从HTML表单解析身体。