express.json()是否将请求对象识别为JSON对象?

时间:2019-02-18 21:19:24

标签: javascript node.js express

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>

我了解this(第5号a)中express.json()的作用 然后我在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()的理解是否正确。

1 个答案:

答案 0 :(得分:2)

您没有提交JSON,因此它什么也不做。

您的req.body来自express.urlencoded(),后者从HTML表单中解析正文。