Go 如何在流拦截器中访问请求?

Go 如何在流拦截器中访问请求?,go,grpc,Go,Grpc,我有一个一元拦截器,其中包含以下代码: func(m middleware)LocationInterceptor(c context.context,req接口{},info*grpc.UnaryServerInfo,handler grpc.UnaryHandler)(接口{},错误){ ctx:=c(HarmonyContext) 位置,ok:=req。(接口{GetLocation()*corev1.location}) 如果!好的{ panic(“在没有位置的消息上使用的位置中间件”)

我有一个一元拦截器,其中包含以下代码:

func(m middleware)LocationInterceptor(c context.context,req接口{},info*grpc.UnaryServerInfo,handler grpc.UnaryHandler)(接口{},错误){
ctx:=c(HarmonyContext)
位置,ok:=req。(接口{GetLocation()*corev1.location})
如果!好的{
panic(“在没有位置的消息上使用的位置中间件”)
}
ctx.Location:=Location.GetLocation()
返回处理程序(c,req)
}
如果我知道流肯定只会从服务器流到客户端,我如何才能将其转换为流拦截器?另外,有没有办法让它只在流开始的那一刻拦截

func(m Middleware)LocationInterceptorStream(srv接口{},ss grpc.ServerStream,info*grpc.StreamServerInfo,handler grpc.StreamHandler)错误{
wrappedStream:=ss。(HarmonyWrappedServerStream)
返回处理程序(srv、wrappedStream)
}

您的RPC是一元RPC还是流式RPC?一元RPC只能调用一元拦截器,流式RPC只能调用流式拦截器。在流式RPC的情况下,您的拦截器将仅在流开始时调用,而不是针对流上的每个新消息。如果您想要后一种行为,您可以实现自定义流。我正在尝试将一元拦截器转换为流拦截器。一元拦截器将请求断言到一个接口,该接口允许我访问有效负载的
位置
字段,但我在流式拦截器中找不到类似的功能。我也有同样的问题。此主题在一段时间内没有更新。你得到答案了吗@Bluskript?你的RPC是一元的还是流式的?一元RPC只能调用一元拦截器,流式RPC只能调用流式拦截器。在流式RPC的情况下,您的拦截器将仅在流开始时调用,而不是针对流上的每个新消息。如果您想要后一种行为,您可以实现自定义流。我正在尝试将一元拦截器转换为流拦截器。一元拦截器将请求断言到一个接口,该接口允许我访问有效负载的
位置
字段,但我在流式拦截器中找不到类似的功能。我也有同样的问题。此主题在一段时间内没有更新。你得到答案了吗?