protocol buffer第一篇:语法介绍

先理解一下protocol buffer是什么东西。

protocol buffer是google发明的一种数据序列化方案,和json是同种类型的玩意,它非常适合在rpc场景下使用。同json一样,protocol buffer具有语言无关性,java应用可以通过protocol buffer与go应用、python应用、php等应用互通数据。protocol buffer有时也简称protobuf或者pb。protocol buffer对应的源文件后缀是.proto,也称为proto文件。在idea上开发proto文件,要安装protobuf support插件,不然没有语法提醒。同时需要引入protobuf-java.jar

<!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java -->
<dependency>
    <groupId>com.google.protobuf</groupId>
    <artifactId>protobuf-java</artifactId>
    <version>3.10.0</version>
</dependency>

同时引入protobuf-maven-plugin插件。插件作用是把proto文件编译成java文件。

<build>
        <extensions>
            <extension>
                <groupId>kr.motd.maven</groupId>
                <artifactId>os-maven-plugin</artifactId>
                <version>1.6.2</version>
            </extension>
        </extensions>
        <plugins>
            <plugin>
                <groupId>org.xolstice.maven.plugins</groupId>
                <artifactId>protobuf-maven-plugin</artifactId>
                <version>0.6.1</version>
                <configuration>
                    <protocArtifact>com.google.protobuf:protoc:3.10.0:exe:${os.detected.classifier}</protocArtifact>
                    <pluginId>grpc-java</pluginId>
                    <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.25.0:exe:${os.detected.classifier}</pluginArtifact>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>compile-custom</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

我们用的是v3版本的protocol buffer,如果要用v3版本的语法,则必须在proto文件的第一行显式指定,syntax = "proto3";,否则会用v2语法。

下面以一个简单例子作为切入点介绍v3语法。

假设要定义一个搜索请求。

原文地址:https://www.cnblogs.com/koushr/p/11428804.html