Обезьяна исправляет ответ перед отправкой ответа - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь применить маску JSON (не относящуюся к игре или фильму в пятницу 13) на мой restify json ответ .

Обычный способ сделать это - вызвать next () на всех маршрутах сервера, а затем реализовать маску в обработчике pre для restify

I can 'сейчас, я собираюсь сделать быстрое исправление, поэтому я пытаюсь обезьяна исправить мой ответ restify следующим образом:

Создайте модуль '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

Iя пытаюсь использовать этот модуль в промежуточном программном обеспечении , но он не работает:

  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 голосов
/ 18 декабря 2018

Это ваше промежуточное программное обеспечение?

 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.

Надеюсь, это поможет.

...