0

我试图拦截 GRPC 存根抛出的异常 io.grpc.StatusRuntimeException,并将它们转换为 REST 异常。我需要实现 ClientInterceptor 不知道如何?

4

2 回答 2

0

我遇到了同样的问题,但无法完成,因为 onMessage 方法会将任何可抛出的对象捕获到 StatusRuntimException 中,并且状态将被取消。

https://github.com/grpc/grpc-java/issues/3434

所以在我的例子中,服务器和客户端应该使用某种标准,比如代码(HTTP CODE)和消息。所以在服务层,检查响应代码是否!= 200 然后从服务器的代码和消息中抛出你的异常

我的帖子也得到了Carl Mastrangelo的回复:)

于 2017-09-07T10:48:23.880 回答
0

你不能在拦截器中。gRPC 存根和核心库会将异常重新映射到 StatusRuntimeException。拦截器旨在让您修改请求和响应,但仍通过 gRPC API 出现。

您可以编写自己的存根包装器(可能使用 AbstractStub)来重新映射这些异常。

于 2017-05-09T19:57:13.093 回答