express中间件如何修改响应内容

hec9527
  • 88

我想搭建一个express服务,服务端支持jsonp,如果请求中包含参数callback参数的时候,返回JSONP数据,否则返回json,默认的路由处理都是返回的json

// 路由模块
router.get('/', function (req, res, next) {
  res.send({
    code: 0,
    data: {
      // res data
    },
    message: 'ok',
  });
});
// app中挂载中间件
app.use(function (req, res, next) {
    // 挂载一个全局大的中间件,统一处理是否返回jsonp数据
});

请问这种如何实现呢,在中间件中使用res.body无法访问到路由send的数据,也就没办法在中间件中包装它了

回复
阅读 1.3k
1 个回答
神话
  • 1.3k
✓ 已被采纳

感觉不使用中间件也可以比较方便的处理:

1:你可以自定义给express.response 对象加多一个方法,

伪代码:
express.response.sendSuccess = function (params) {
  if(params['callback']){
      express.response.jsonp.call(this, params)
  }else{
    express.response.send.call(this, params)
  }
}

然后res.sendSuccess(xxxx)

2:自行判断一下,使用res.send({xxx}) 还是res.jsonp({xxxx}):

res.jsonp() , 这个方法就会返回一个jsonp了
宣传栏