腊月的季节

req.query、req.params和req.body的区别

req.params

获取路由中的参数,例如/shouyi/:user/helloword,用户访问的时候为/shouyi/shitou/helloword那么取得时候就是req.params.user,user其实在url里面起到的作用是变量,user的值就是shitou了。

req.query

req.query获取路由?后的参数,例如/api/users?name=shitou。

req.body

req.body获取form提交参数可以是form表单也可以是自己打包的数据,一定是post请求,express里依赖的中间件必须有bodyParser。

路由express.Router

在myblog目录下创建空文件夹routes,在routes目录下创建index.js和users.js。最后代码如下:
index.js

1
2
3
4
5
6
7
var express = require('express');
var app = express();
var indexRouter = require('./routes/index');
var userRouter = require('./routes/users');
app.use('/',indexRouter);
app.use('/user',userRouter);
app.listen(3000);

routes/index.js

1
2
3
4
5
6
var express = require('express');
var router = express.Router();
router.get('/',function(req,res){
res.send('hello ,express');
});
module.exports=router;

routes/user.js

1
2
3
4
5
6
var express = require('express');
var router = express.Router();
router.get('/:name',function(req,res){
res.send('hello ,'+req,params.name);
});
module.exports = router;

以上代码的意思是:我们将/和/users/:name的路由分别放到了routes/index.js和routes/users.js中,每个路由文件通过生成一个express.Router实例router导出,通过app.use挂载到不同的路径。这两种代码实现了相同的功能,但在实际开发中推荐使用express.Router将不同的路由分离到不同的路由文件中。

热评文章