5

如何在 Apinto 实现 HTTP 与gRPC 的协议转换 (下) - 小Kit

 1 year ago
source link: https://www.cnblogs.com/apibest/p/17226854.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
2805810-20230317145814683-598434401.png

上文给大家详细介绍了在 Apinto 上实现 HTTPgRPC 的协议转换的基本内容,本篇我们将继续讲解如何在 Apinto-Dashboard 中进行配置。

配置 Apinto

Apinto 上我们提供了可视化界面工具 Apinto-Dashboard,以降低初学者的使用成本,以下操作均在 Apinto-Dashboard 中进行配置。

1. 在全局插件中新建 http_to_grpc 插件

2805810-20230317145902837-1592964634.png

2. 创建 gRPC 服务

2805810-20230317145920370-915927538.png

在这里,我们配置 gRPC服务的相关信息,我们可以配置多个静态负载地址,这里我们填写了 127.0.0.1:9001

3.创建 http 路由,绑定 grpc_demo 上游服务

2805810-20230317145935839-275003584.png

4. 在路由中绑定 http_to_grpc 插件

由于 gRPC 服务端示例中,我们开启了gRPC反射,因此,在配置插件时,开启反射按钮即可

2805810-20230317145948098-318443907.png

注:

  • 当服务名称不填时,则默认使用  HTTP 请求路径的第一个/ 和第二个 / 之间的值作为服务名;

  • 当方法名称不填时,则默认使用  HTTP 请求路径的第二个 / 和第三个 / 之间的值作为服务名;
    ·即,若 HTTP 请求路径上 /Service.Hello/Hello ,则此时服务名称为 Service.Hello ,方法名称为 Hello

关于 Protobuf 编码器

gRPC 未开启反射,我们需要先新建一个Protobuf 编码器,绑定 http_to_grpc 插件时,绑定对应的编码器 ID 即可,详细步骤如下:

1. 创建 Protobuf 编码器

2805810-20230317150004485-1720821459.png

2. 在路由中绑定 http_to_grpc 插件

7.png

填写完后提交即可。

验证协议转换请求

1. 启动 gRPC 服务器

2805810-20230317150051890-1864670762.jpg

2.请求 Service.Hello 服务的 Hello 方法

在上文中,我们定义了 Hello 方法的功能:

  • HelloRequest 中的 name 字段通过 HelloResponsemsg 字段封装成 hello,%s 的结果返回;

  • 将请求的 Header 作为 gRPC 响应的 Trailer 头部返回。

调用结果如下:

2805810-20230317150106129-490770759.png
2805810-20230317150114098-246378776.png

欢迎到 GitHub 体验 👉:https://github.com/eolinker/apinto

目前 Apinto 及其周边项目已经开源,我们希望通过 Apinto 强大的插件拓展能力,用户可像乐高积木一样根据需要自行拓展 Apinto 的插件,以满足不同的业务市场需求。

Apinto 目前属于萌芽阶段,我们希望集合广大开源爱好者的力量,与大家一起讨论方案,接受大家的批评指正,一起将产品打磨完善,做下一个端与端间的 Traffic Middleware。

这是一个开放和积极的项目,我们诚挚地邀请您一起参与到我们的项目开源工作中。 每一个贡献都是有意义的,包括但不限于:

  • 查找 bugs,取得性能上的提升
  • 帮助完善文档,提供用户操作体验
  • 提交你们的 issue,让我们知道您的奇思妙想
  • 参与自定义插件的开发,丰富 apinto 的能力

欢迎各位开源爱好者参与到 Apinto 项目中,和我们一起为开源事业贡献自己的力量!

我们希望得到您的关注~

👉 Github : https://github.com/eolinker/apinto


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK