返回

Protobufs 在 Node.js 的应用,程序员必备技能!

前端



Protobuf 是一种用于序列化和反序列化对象的格式规范。与 JSON 类似,但有几点不同。它是一个二进制格式,因此比 JSON 更紧凑、更高效。此外,它是一种结构化格式,这意味着它有一个预定义的结构,便于解析。


在 Node.js 中使用 Protobuf 非常简单。首先,你需要安装 Protobuf 的 npm 包:

npm install protobufjs

然后,你可以使用 Protobuf 的库来创建和解析 Protobuf 消息。


要创建 Protobuf 消息,你可以使用 google-protobuf 包中的 Message 类。例如,以下代码创建了一个简单的 Person 消息:

const Person = require('google-protobuf/google/protobuf/descriptor_pb').Person;

const person = new Person();
person.setName('John Doe');
person.setId(12345);

要解析 Protobuf 消息,你可以使用 google-protobuf 包中的 decode 函数。例如,以下代码解析一个 Person 消息:

const Person = require('google-protobuf/google/protobuf/descriptor_pb').Person;

const message = Person.decode(buffer);

console.log(message.getName()); // John Doe
console.log(message.getId()); // 12345

Protobuf 也可以在 Express 中使用。你可以使用 protobuf-express npm 包来做到这一点。

npm install protobuf-express

然后,你可以使用 protobuf-express 包中的 body-parser 中间件来解析 Protobuf 请求。例如,以下代码使用 body-parser 中间件解析 Protobuf 请求:

const express = require('express');
const bodyParser = require('body-parser');
const protobuf = require('protobuf-express');

const app = express();

app.use(bodyParser.raw({type: 'application/protobuf'}));

app.post('/person', (req, res) => {
  const person = Person.decode(req.body);

  console.log(person.getName()); // John Doe
  console.log(person.getId()); // 12345

  res.send('OK');
});

Protobuf 是一种非常强大的格式规范,可以在许多不同的场景中使用。它非常适合用于在 Node.js 和其他平台之间发送数据。