gpt4 book ai didi

go - 如何在 gRPC 协议(protocol)中接受和验证这个映射?

转载 作者:行者123 更新时间:2023-12-01 22:20:25 26 4
gpt4 key购买 nike

我正在向我的 gRPC 应用程序发送以下 POST 请求:

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 proto 文件中对该请求的数据结构进行建模。
我正在考虑做这样的事情:
message MyRequestData {
// pairs represents that map that the user will send in to the MyEndpoint.
map<string, string> pairs = 1;
}
但是这个规范还不够通用。我需要知道如何正确编写此规范。
问题一:如何编写此规范,以便它接受值中的字符串以及字符串列表?
问题二:如何进行验证以确保 pairs有 key mandatory-key1mandatory-key2没有别的?
问题3:如何进行验证以确保:
  • pairs有 key mandatory-key1mandatory-key2没有别的?
  • pairs[mandatory-key1"]具有非空字符串的值?
  • pairs["mandatory-key2"]有值是 的映射吗?
  • 最佳答案

    Protobufs 不提供(您需要的)验证。
    当您使用 protoc 生成的源时,您需要对验证进行编码。
    Protobuf 不直接支持重复的映射值,但您可以:

    message Request {
    string mandatory_key1 = 1;
    map<string, Value> mandatory_key2 = 2;
    }
    message Value {
    repeated string value = 1;
    }

    关于go - 如何在 gRPC 协议(protocol)中接受和验证这个映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63927159/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com