gpt4 book ai didi

regex - Protobuf3 : String validation with regex

转载 作者:行者123 更新时间:2023-12-04 11:34:52 24 4
gpt4 key购买 nike

我一直在使用Protobuf3定义PB消息:

syntax = "proto3";
package vioozer_protobuf;

message Update
{
string sensor_id = 1;
...
}

在我的系统中,传感器具有唯一的ID格式(a-la SENSOR-1342r43),可以使用正则表达式轻松对其进行验证。

是否可以将正则表达式验证器添加到protobuf字段,以便仅将符合该正则表达式的字符串接受到该字段中?

最佳答案

Protobuf不支持开箱即用的消息验证,但是可以使用插件添加消息(这是唯一的方法,但这并不简单)。

您可以尝试找到现有的插件,也可以创建自己的插件(如果没有适用于您的语言的插件)。

如果您决定编写自己的插件,那么第一步是为字段定义a custom option:

package yourcompany;

import "google/protobuf/descriptor.proto";

extend google.protobuf.FieldOptions {
optional string validator = 51234;
}

此选项使您可以为具体字段指定正则表达式。然后,您应用新的自定义选项:
message Update {
string sensor_id = 1 [(yourcompany.validator) = "SENSOR-???????"];
// ...
}

其次,更具挑战性的步骤是 write your own plugin,以便将验证逻辑添加到生成的代码中:

Additionally, plugins are able to insert code into the files generated by other code generators. See the comments about "insertion points" in plugin.proto for more on this. This could be used, for example, to write a plugin which generates RPC service code that is tailored for a particular RPC system. See the documentation for the generated code in each language to find out what insertion points they provide.



您的插件必须检查自定义选项的值,并为字段生成其他验证代码。

关于regex - Protobuf3 : String validation with regex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39873229/

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