I tred "verwenden()" Methode der Restify zu verwenden, um eine generische Fehlerbehandlung zu tun, zum BeispielRestify verwenden() nach Route endet
server = restify.createServer({...});
server.use(restify.acceptParser(server.acceptable));
server.use(restify.queryParser());
server.use(restify.bodyParser());
...
app.post('/test/:id', function (req, res, next) {...})
server.use(function(err, req, res, next) {
logger.error({req: req}, "error processing request");
});
aber das letzte .use() -Prozedur nie nach genannt wurde Route beendet Verarbeitung. Es wurde nach Routen "registriert". Ich kann sehen, auf dem Server startet, wurde diese .use() verarbeitet, nachdem meine Routen verarbeitet wurden. Ich bin ziemlich neu zu restifizieren, also meine Frage ist, kann die .user() -Methode verwendet werden, um Handler nach dem Ende der Route anzuwenden. Ich weiß, dass wir nach dem Ereignis nach der Beendigung der Route die Verarbeitung abhören können, aber wir würden gerne sehen, ob wir den Handler .use() verwenden können.
UPDATE: Hier ist eine vereinfachte Version des Codes. Die vor der server.post() registrierten .use() - Methoden wurden aufgerufen, aber nicht die nach server.post() registrierte Methode. Irgendwelche Vorschläge?
var restify = require('restify');
var cookieParser = require('restify-cookies');
var helmet = require('helmet');
var util = require('util');
var logger = require('./util/logger');
module.exports = function(server){
server.use(restify.acceptParser(server.acceptable));
server.use(restify.queryParser());
server.use(restify.bodyParser());
server.use(helmet.noCache());
server.use(helmet.hidePoweredBy());
server.use(cookieParser.parse);
// this .use() method is called when accessing the server.post route below
server.use(function(req, res, next) {
console.log('BERORE ROUTE');
return next();
});
server.post('/test/:returnId', function (req, res, next) {
var err = new restify.errors.InternalServerError('oh noes!');
return next(err);
});
// this .use() method is not called when accessing the server.post route above
server.use(function(req, res, next) {
console.log('Tata...');
return next();
});
};
Korrektur: einen Tippfehler, app.post ('/ Test /: id', function (req, res, nächste) {...}) sollten Server sein.post ('/ test /: id', Funktion (req, res, next) {...}) – Jane
@migg Ich habe next() aufgerufen. und die .use() - Methoden vor der server.post() wurden aufgerufen, aber nicht die nach server.post() – Jane