при restifyError вызывая toString вместо toJSON - PullRequest
0 голосов
/ 11 октября 2018

Я новичок в восстановлении и пытаюсь понять, как работает система обработки ошибок.

У меня есть простой сервер:

var application = restify.createServer({
     name: 'test-api',
     version: '1.0.0'
});

application.listen(3001, function() {
     console.log('Started...');
});

application.get('/test-api', (req, resp, next) => {
     next(new Error('test'));
});

И у меня есть эта простая ошибкаобработчик:

application.on('restifyError', function(req: restify.Request, res: restify.Response, err, callback) {
     err.toJSON = function customToJSON() {
         console.log('customToJSON');
         return {
             name: err.name,
             message: err.message
         };
     };
     err.toString = function customToString() {
         console.log('customToString');
         return 'i just want a string';
     };
     return callback();
 });

При тестировании этого API обработчик ошибок всегда вызывает функцию customToString.Я попытался изменить свой сервер, добавив заголовок по умолчанию к запросу / ответу:

application.pre(function(req, res: restify.Response, next) {
     req.headers.accept = 'application/json';
     res.header('accept', 'application/json');
     return next();
});

Но у меня все еще нет нужного ответа.

Я ожидаю, что обработчик ошибок будет вызывать customToJSON вместо customToString.Есть ли какая-либо другая конфигурация?

...