18

I've seen two different ways of declaring an gRPC service using Protobuf v3. Some code has the rpc line end with a semicolon (such as the current proto3 documentation):

service SearchService {
  rpc Search (SearchRequest) returns (SearchResponse);
}

Other code has the rpc line end with {}:

service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

Both of these compile with the protoc v3.0.0-alpha-2 compiler and produce the same (go) code.

What is the difference between the two syntaxes?

psanford
  • 5,580
  • 1
  • 26
  • 25

1 Answers1

17

Nothing, really; they are equivalent.

The {} syntax is used when there are options. If you don't specify any options, either syntax works (just like in C!).

Eric Anderson
  • 24,057
  • 5
  • 55
  • 76
  • Thanks! Do you have anything that shows options in use? – psanford May 07 '15 at 17:53
  • 2
    https://github.com/gengo/grpc-gateway makes use of them for REST→gRPC conversion (FYI: there in a PR to swap the annotations to those at https://github.com/google/googleapis/tree/master/google/api). Things like timeout could also eventually be specified with an option, but I don't think that those are defined yet. – Eric Anderson May 08 '15 at 19:03