我需要在使用不同的验证器调用不同的 rpc 方法之前验证请求。
所以我实现了像
class BarRequestValidator {
public FooServiceError validate(BarRequest request) {
if (request.bar.length > 12) {
return FooServiceError.BAR_TOO_LONG;
} else {
return null;
}
}
}
并在我的 rpc 方法之前添加自定义注释
class FooService extends FooServiceGrpc.FooServiceImplBase {
@Validated(validator = BarRequestValidator.class)
public void bar(BarRequest request, StreamObserver<BarResponse> responseObserver) {
// Validator should be executed before this line, and returns error once validation fails.
assert(request.bar <= 12);
}
}
但是我发现在gRPC ServerInterceptor中找不到获取注解信息的方法。有没有办法像这样实现 grpc 请求验证?