grpc-web

摘要

定义

grpc-web 插件是一个代理插件,用于转换 gRPC Web 客户端到 gRPC Server 的请求。

gRPC Web Client -> APISIX -> gRPC server

如何开启

启用 gRPC Web 代理插件,路由必须使用 前缀匹配 模式(例如:/*/grpc/example/*), 因为 gRPC Web 客户端会在 URI 中传递 proto 中声明的包名称服务接口名称方法名称等信息(例如:/path/a6.RouteService/Insert), 使用 绝对匹配 时将无法命中插件和提取 proto 信息。

  1. curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
  2. {
  3. "uri":"/grpc/web/*",
  4. "plugins":{
  5. "grpc-web":{}
  6. },
  7. "upstream":{
  8. "scheme":"grpc",
  9. "type":"roundrobin",
  10. "nodes":{
  11. "127.0.0.1:1980":1
  12. }
  13. }
  14. }'

测试插件

禁用插件

只需删除插件配置中 grpc-web 的JSON配置即可。 APISIX 插件是热加载的,所以不需要重启 APISIX。

  1. curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
  2. {
  3. "uri":"/grpc/web/*",
  4. "plugins":{},
  5. "upstream":{
  6. "scheme":"grpc",
  7. "type":"roundrobin",
  8. "nodes":{
  9. "127.0.0.1:1980":1
  10. }
  11. }
  12. }'