如何在gRPC拦截器中访问消息请求?

4ntoine:

我想在服务器端为多个方法使用相同的拦截器,因为它们都具有相同的请求类型(StateRequest):

rpc apply (StateRequest) returns (StateResponse) {} 
rpc cancel (StateRequest) returns (StateResponse) {}
rpc remove (StateRequest) returns (StateResponse) {}
rpc development (StateRequest) returns (StateResponse) {}
rpc implement (StateRequest) returns (StateResponse) {}
rpc draft (StateRequest) returns (StateResponse) {}

拦截器:

public class ServerUserRoleAuthInterceptor implements ServerInterceptor {

    @Override
    public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(
        ServerCall<ReqT, RespT> call,
        Metadata headers,
        ServerCallHandler<ReqT, RespT> next) {
        String callName = call.getMethodDescriptor().getFullMethodName();
        logger.info("Call: {}", callName);

        // TODO: validate request (`StateRequest` instance)

        return next.startCall(call, headers);
    }
}

我该怎么做?

埃里克·安德森(Eric Anderson):

您需要观察上onMessage(ReqT)的回调Listener

return new SimpleForwardingServerCallListener<ReqT>(next.startCall(call, headers)) {
  @Override 
  public void onMessage(ReqT request) {
    // TODO:validate request
    super.onMessage(request);
  }
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 gRPC 流拦截器中获取消息值

将 gRPC 拦截器中的请求转换为相关的 protobuf 消息

如何在SwaggerUIBundle中设置请求拦截器?

如何在AngularJS中访问拦截器的'config'对象

如何在CXF拦截器中访问Servlet会话?

Python:在拦截器中读取grpc proto请求

Axios:如何正确取消请求拦截器中的请求?

如何在拦截器中发送不同的请求?

如何在 Spring-Integration 的拦截器中获取消息头

如何在Angular拦截器中向请求主体添加内容?

如何在拦截器中取消当前请求-Angular 4

如何在拦截器Angular中获取请求的查询参数

如何在Angular的HTTP拦截器中推迟某些HTTP请求

如何在Struts 2拦截器中访问HttpSession?我是不是该?

如何在拦截器中访问上下文?

使用GRPC服务器拦截器验证请求

如何在httpProvider responseError拦截器中传播错误

如何在Hibernate拦截器中获取Hibernate会话?

如何在Spring Boot中配置拦截器?

如何在ktor中创建可重用的拦截器?

如何在 $.ajaxSetup ajax 拦截器中获取 URL

飞镖Grpc的拦截器

如何在不使用 axios 拦截器进行整页刷新的情况下刷新 vuejs 中的访问令牌

C#中的Grpc中间件或拦截器

grpc-web 打字稿中的绑定拦截器

NestJs-如何在拦截器上获取请求主体

在Spring-mvc拦截器中,如何访问处理程序控制器方法?

Spring Soap拦截器如何修改消息的内容?

如何通过拦截器向angularjs中的http请求添加新标头?