将protobuf对象作为json返回

时间:2017-04-04 11:55:17

标签: javascript node.js protocol-buffers

我有一个node-js作为测试基础架构的一部分,其行为类似于缓存,我们使用它来确保正确生成请求,我们发送给它的一种请求是protobuf请求,以验证发送请求我们将它存储在缓存对象中,然后根据uri我们检索它(使用uri作为密钥)。

var store = function(req,res) {
    obj['body'] = req.body;
    originalUrl = req.originalUrl;
    cache.record(originalUrl, obj);
}

router.get('/cache', function (req, res) {
    var key = req.query['originalUrl'];
    res.set('Content-Type', 'application/json');
    res.send(JSON.stringify(cache.get(key)));
});

对于正常的发布/获取请求,这工作正常,但是我无法以二进制格式获取protobuf请求,使用调试我可以看到它添加到缓存但我无法弄清楚如何返回它,最好的情况是使用对象和模板返回json演示文稿,如果已经存在的库,如果不可能返回字节,客户端可以将它们转换为protobbuf

1 个答案:

答案 0 :(得分:1)

有一个protobufjs moduel可以在Node中使用协议缓冲区:

  

我无法弄清楚如何返回它,最好的情况是使用对象和模板返回json演示文稿(如果已存在的库)

您可以使用protobufjs中的Message.decode对缓冲区进行解码,如果需要,您还可以发送相同数据的JSON表示。

有一篇非常好的文档: