【发布时间】:2015-08-28 13:02:41
【问题描述】:
我一直在尝试处理 restify 中的 HTTP 错误。这些是我到目前为止一直在尝试的代码:
function send403(req, res, err, cb) {
console.log('Forbidden');
res.end();
}
然后我在ForbiddenError 事件中使用该函数:
server.on('ForbiddenError', send403);
我希望每次服务器收到没有authorization 标头的请求时都会执行该函数
server.get('/resource', function (req, res, next) {
if(typeof req.headers['authorization'] === 'undefined') {
return next(new restify.ForbiddenError());
}
else {
// HTTP 200
}
});
每次我尝试访问该 url 时,我都会收到默认的 restify JSON 消息。
仅供参考,我已经尝试了相同的方法来解决 404 错误,并且它有效
server.on('NotFound', send404);
每次我尝试向不存在的 url 发送请求时,send404 函数都会被执行。
【问题讨论】:
-
如果你想从 header 或 body 中获取值,我建议你使用 var urVaribleHere = req.body.varible || '';还有什么部分你不明白restify?因为每次用户发送一个不存在的 url 都不会被执行,并且会发送 404 webPage Notfound.
-
@GujaratSantana 非常抱歉,如果这个问题具有误导性,我不会说英语。 restify for HTTP 错误的默认行为是以 JSON 格式发送响应。基本上我在这里要做的是让它做其他事情,比如为特定的 HTTP 错误创建日志。我尝试了
server.on('NotFound', fn)事件并且它有效,但server.on('ForbiddenError', fn)不起作用。 -
因此您尝试将带有 server.on('ForbiddenError', fn) 的 JSON 发送到客户端。我不能帮你写代码,但也许这个链接会帮助你更好地理解thejackalofjavascript.com/architecting-a-restful-node-js-app
标签: node.js http-status-code-403 restify