Go 如何在gRPC协议中接受和验证此映射?
我将向我的gRPC应用程序发送以下POST请求:Go 如何在gRPC协议中接受和验证此映射?,go,grpc,protoc,Go,Grpc,Protoc,我将向我的gRPC应用程序发送以下POST请求: curl \ --request POST \ --header 'Content-Type: application/json' \ --data-raw '{ "mandatory-key1": "value1", "mandatory-key2": { "arbitrary-optional-key1": [ "b"
curl \
--request POST \
--header 'Content-Type: application/json' \
--data-raw '{
"mandatory-key1": "value1",
"mandatory-key2": {
"arbitrary-optional-key1": [
"b",
"c"
],
"arbitrary-optional-key2": [
"e"
]
}
}' \
'http://localhost:11000/MyEndpoint'
与mandatory-key-1
关联的值必须是非空字符串。
与mandatory-key-2
关联的值必须是一个映射,其中所有键都是字符串,所有值都是字符串列表
现在,我必须在gRPC协议文件中对该请求的数据结构进行建模
我正在考虑这样做:
message MyRequestData {
// pairs represents that map that the user will send in to the MyEndpoint.
map<string, string> pairs = 1;
}
消息MyRequestData{
//pairs表示用户将发送到MyEndpoint的映射。
映射对=1;
}
但该规范不够通用。我需要知道如何正确编写此规范
问题1:如何编写此规范,使其接受值中的字符串以及字符串列表
问题2:我如何进行验证,以确保配对
具有密钥mandatory-key1
和mandatory-key2
而没有其他密钥
问题3:我如何进行验证以确保:
pairs
有键mandatory-key1
和mandatory-key2
而没有其他键pairs[mandatory-key1”]
的值是否为非空字符串pairs[“mandatory-key2”]
的值是什么消息请求{
字符串强制_key1=1;
map强制键2=2;
}
消息值{
重复字符串值=1;
}