【问题标题】:Formatting GRPC handlers in NodeJS在 NodeJS 中格式化 GRPC 处理程序
【发布时间】:2023-03-11 10:01:01
【问题描述】:

我是 GRPC 新手,我想了解如何使用 gRPC 和 NodeJS 进行错误格式化。

每当我们需要为 gRPC 服务器构建请求处理程序时,我们都会遵循以下模式:

 * getFeature request handler. Gets a request with a point, and responds with a
 * feature object indicating whether there is a feature at that point.
 * @param {EventEmitter} call Call object for the handler to process
 * @param {function(Error, feature)} callback Response callback
 */
function getFeature(call, callback) {
  callback(null, checkFeature(call.request));
}

我很清楚调用参数是什么,以及如何使用回调。

我的问题是,回调的第一个字段应该是什么样子? 我认为nodeJS中没有错误标准,看起来这应该是gRPC特定的格式。

我环顾四周,有一个gRPC status codes 的标准。那是错误字段吗?表示状态的 int 或 0(或无),如果一切正常?

【问题讨论】:

    标签: node.js grpc


    【解决方案1】:

    你有几个选择。与 JavaScript 中大多数基于回调的异步 API 一样,该回调接受常规的 JS Error 对象。这将转化为UNKNOWN 状态码。您还可以将错误对象上的code 属性设置为grpc.status 枚举的成员。例如,您可以使用error.code = grpc.status.NOT_FOUND 发送“未找到”错误。此外,您可以将错误对象上的metadata 属性设置为grpc.Metadata 类的实例,以随错误一起发送额外的尾随元数据。

    除此之外,您还可以传递一个带有details 字符串和codemetadata 属性的简单对象,这些属性与上述相同。例如:

    callback({details: "Entry not found", code: grpc.status.NOT_FOUND});
    

    请注意,如果一切正常,则错误参数应为 null

    【讨论】:

    • 明白了,谢谢!我在所有 proto 文件中定义了一条错误消息,这更有意义
    猜你喜欢
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多