REST 是否支持协议缓冲区

Does REST supports protocol buffers

这可能是一个非常笼统的问题,但考虑到 REST 专注于通过单一一致的接口访问命名资源这一事实;它支持协议缓冲区吗?

是的,你完全可以结合 Protobuf 和 REST。

Protbuf 指定了一种编码数据的方式。 REST 指定了一种与资源交互的方式,但不需要对资源主体进行任何特定编码。如果您创建基于 RESTful HTTP 的 API 并使用 Protobuf 对实体主体(HTTP 请求或响应的有效负载部分的技术术语)进行编码,那么您同时使用了 REST 和 Protobuf .

回到未来,有这个Spring REST API with Protocol Buffers教程:

生成相应的Java类使用:

protoc --java_out=java resources/baeldung.proto

在 Maven 的 POM 文件中添加以下依赖项:

<dependency>
    <groupId>com.google.protobuf</groupId>
    <artifactId>protobuf-java</artifactId>
    <version>3.0.0-beta-3</version>
</dependency>

将以下转换器添加到您的@SpringBootApplication:

@Bean
ProtobufHttpMessageConverter protobufHttpMessageConverter() {
    return new ProtobufHttpMessageConverter();
}

ProtobufHttpMessageConverter bean 用于将@RequestMapping 注释方法返回的响应转换为协议缓冲区消息。

这里重要的是我们使用的是 Protocol Buffer 特定数据——而不是标准 POJO。