syntax = "proto3";
package statustest;
import "envoyproxy/protoc-gen-validate/validate/validate.proto";
import "google/rpc/status.proto";
package helloworld;
// The greeter service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply) {
option (google.api.http) = {
post: "/service/hello"
body: "*"
};
}
}
// The request message containing the user's name.
message HelloRequest {
string name = 1 [(validate.rules).string.pattern = "^\\w+( +\\w+)*$"]; // Required. Allows multiple words with spaces in between, as it can contain both first and last name;
}
// The response message containing the greetings
message HelloReply {
string message = 1;
google.rpc.Status status = 2;
}
Использование грамматики из Грамматика Protobuf3
Приведенный выше синтаксический анализ не выполняется в следующих местах
- Не удается захватить google.rpc.Status (rpc - зарезервированное ключевое слово)
- имя строки = 1 [(validate.rules) .string.pattern = "^ \ w + (+ \ w +) * $"];- Сбой, поскольку он содержит строку (зарезервированное ключевое слово) между опцией. В идеале в моем сценарии мне не нужны никакие параметры данных. Вся строка может быть прочитана как строка name = 1;
- option (google.api.http) - вся опция, поскольку она имеет многострочный характер. Это также может быть пропущено в моем сценарии.