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

关于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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值