nodejs传输数据获取及中间件设定

来源:互联网 发布:什么蛋糕品牌最好 知乎 编辑:程序博客网 时间:2024/05/16 17:22

关于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;
0 0