【发布时间】:2020-07-05 08:57:59
【问题描述】:
我正在使用 GRPC Java 并希望使用拦截器验证请求。
像this 和this 这样的许多链接告诉了一种使用onMessage() 访问请求的方法,但我想知道他们正在做些什么来验证请求。
另外,onMessage() 中的消息参数是通用的,我不能直接访问请求字段参数,但必须使用一些 if-else/switch-case 对消息进行类型转换,然后单独对每个字段应用检查,即我现在的最后一个选择。
例如,这是一个示例 proto 文件:
...
service XYZService {
rpc abc(Request1) returns (Response1);
rpc def(Request2) returns (Response2);
.
.
.
}
message Request1 {
string name = 1;
int32 number = 2;
}
message Request2 {
string name = 1;
int32 number = 2;
string email = 3;
}
...
我还简单地打印了 onMessage() 的消息参数,发现请求参数为原始字符串 (message.toString()),但是在发送默认值时这些参数未显示在字符串中(如字符串的 "" 或 0对于 int32) [我正在使用bloomrpc 在本地机器上发送请求]。那么这些值在发送默认值或bloomrpc中有什么东西时不会显示在原始字符串中?
所以我的两个问题是:
- 验证请求的不同方法(考虑到许多请求都有一些公共字段,其检查条件也将相同)。
- 在原始字符串中显示默认值参数的任何解决方法。
【问题讨论】:
标签: java validation grpc interceptor grpc-java