关于nodejs几种获取传输参数的方法
1-req.query
获取请求url中使用?或&连接的参数
eg.
agent.get('/courses/lessons?courseID='+ courseID)
获取方式:
req.query.coursesID
2-req.body
获取请求体发送的数据(一般请求体是一个对象)
agent.get('/app/auth/password/forgot/')
.set('Content-Type', 'application/json')
//发送请求体信息,即req.body中的信息
.send({email: superUserInfo.email})
.expect('Content-Type', 'text/html; charset=utf-8')
.expect(200)
.end(function (err, res) {
done(err);
});
请求方式:
req.body.email
3-req.params
获取请求url中斜杠(/)后边的参数
app.route('/education/badges/category/:badgesCategoryId')
.get(badges.getBadgesByBadgesCategoryId);
获取方式:
req.params.badgesCategoryId
4-req.param
中间件。当多个API都需要进行相同的操作(如都需要拿到userId进行授权操作或需要查到user的信息),可以将此过程封装起来。
中间件路由通过app.param中第一个参数与实际路由中的参数进行匹配,若匹配到则在请求实际路由前会先进入中间件路由。
//以下路由都包含:userId这个参数,因此若对以下路由发起请求都会先跳转到中间件路由。
app.route('/app/auth/user/:userId/password')
.get(users.changePasswordRandom)
.put(users.changePassword);
app.route('/app/auth/users/:userId')
.put(users.update)
.delete(users.delete);
app.route('/app/auth/users/:userId/status')
.put(users.activateUser);
//中间件路由
app.param('userId', users.userByID);
当检测到路由中含有userId这个参数,会先进入app.param()路由进行操作,若无错误,则会跳转到实际路由
5-自定义方法(上接req.param)
当中间件路由跳转到的函数获取到需要全局存储的数据,可将数据存储为req的自定义方法.如:
req.model = user;
执行完中间件,跳转到实际路由时便可以获取这个值,
var userId = req.model._id;