gpt4 book ai didi

node.js - 如何更改restify中的默认错误输出

转载 作者:IT老高 更新时间:2023-10-28 23:23:13 26 4
gpt4 key购买 nike

有什么方法可以更改默认错误输出?假设我要更改其余错误输出:

{
"code": "InvalidArgumentError",
"message": "blah blah..."
}

到:

{
"code": 10001,
"message": "blah blah",
"extraMsg": "blah blah"
}

以下是我的一些想法:

  • 监听错误事件。
    似乎并非所有 RestError 都发出了额外的事件(如 NotFound、MethodNotAllowed、VersionNotAllowed ......做)。所以我无法捕获所有错误来重写它们。

  • 在发送响应数据之前监听事件。
    我翻遍了官方文档,没有找到相关的。

  • 修改RestError类的实现。
    好吧,这显然不是一个好方法。

还有其他想法吗?

最佳答案

最后我提供了一个自定义的 JSON 格式化程序来得到我想要的:

var server = restify.createServer( {
formatters: {
'application/json': function customizedFormatJSON( req, res, body ) {
// Copied from restify/lib/formatters/json.js

if ( body instanceof Error ) {
// snoop for RestError or HttpError, but don't rely on
// instanceof
res.statusCode = body.statusCode || 500;

if ( body.body ) {
body = {
code: 10001,
scode: body.body.code,
msg: body.body.message
};
} else {
body = {
code: 10001,
msg: body.message
};
}
} else if ( Buffer.isBuffer( body ) ) {
body = body.toString( 'base64' );
}

var data = JSON.stringify( body );
res.setHeader( 'Content-Length', Buffer.byteLength( data ) );

return data;
}
}
} );

关于node.js - 如何更改restify中的默认错误输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16540093/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com