在发送响应之前,Monkey Patch重新整理响应

时间:2018-12-18 15:00:43

标签: node.js restify

我正在尝试在 restify json 响应上应用JSON掩码(与周五13日的游戏或电影无关)。

  

通常的方法是在所有服务器路由中调用next(),然后   在restify的“ pre”处理程序中实现掩码

我现在不能做,我要快速修复,因此我尝试用猴子修补我的refify响应,如下所示:

创建一个模块“ CustomResponse”:

function CustomResponse (originalResponse) {
  this.restifyResponse = originalResponse
  this.type = 'customResponse'
}

CustomResponse.prototype.send = function (code, payload) {
  if (!payload) { payload = code }

  console.log(payload)  
  this.restifyResponse.send(code, payload)
}

module.exports = CustomResponse

我正在尝试在中间件中使用此模块,但是它不起作用:

  var CustomResponse = require('./customResponse') // the file above

  server.use(function (req, response, next) {
    response = new customResponse(response)
    next()
  })

仅当我在路线中使用它时才有效:

 var CustomResponse = require('./customResponse') // the file above

 server.get({
   path: '/foo/bar'
 }, function(request, response, next){
     response = new CustomResponse(response)
     response.send('baz') // this will print on the console the response and send it to the browser
 })

感谢任何提示!

1 个答案:

答案 0 :(得分:0)

这是您的中间件吗?

 var CustomResponse = require('./customResponse') // the file above

  server.use(function (req, response, next) {
    response = new Response(response)
    next()
  })

对于此代码:

response = new Response(response)

我认为您应该像下面的代码一样使用它

response = new CustomResponse(response)

因为您使用的变量是CustomResponse,而不是Response

希望对您有帮助。