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

配置 Apinto

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

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

2. 创建 gRPC 服务

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

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

4. 在路由中绑定 http_to_grpc 插件

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

注:

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

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

    ·即,若 HTTP 请求路径上 /Service.Hello/Hello ,则此时服务名称为 Service.Hello ,方法名称为 Hello

关于 Protobuf 编码器

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

1. 创建 Protobuf 编码器

2. 在路由中绑定 http_to_grpc 插件

填写完后提交即可。

验证协议转换请求

1. 启动 gRPC 服务器

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

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

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

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

调用结果如下:

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

写在最后

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

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

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

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

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

我们希望得到您的关注~

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

如何在 Apinto 实现 HTTP 与gRPC 的协议转换 (下)的更多相关文章

  1. grpc Unary模式下客户端创建insecure channel的主要流程

    (原创)C/C/1.25.0-dev grpc-c/8.0.0, 使用的例子是自带的例子GreeterClient grpc Unary模式下客户端创建insecure channel的主要流程 gr ...

  2. 如何在 C# 项目中链接一个文件夹下的所有文件

    在 C# 项目中通过链接方式引入文件可以让我们在项目中使用这些文件中的代码.常见的比如链接 AssemblyInfo.cs 文件,这样我们就可以在项目中使用这个文件中的版本号等信息.但是如果我们想要链 ...

  3. 一步一步学Silverlight 2系列(20):如何在Silverlight中与HTML DOM交互(下)

    述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...

  4. 【gRPC】C++下使用CMakeLists快速构建项目

    在gRPC中,编写.proto文件(protocol buffer文件)来定义RPC服务的接口是第一步 先通过proto的代码生成器编译生成pb.h.pb.cc.grpc.pb.h.grpc.pb.c ...

  5. 如何在grails2.3.x中的fork模式下进行调试?-【grails】

    grails2.3.x中默认情况下运行模式被设置成了fork模式,在这种模式下,大家会发现设置了断点后无法进行中断.这是由于fork模式造成的,因为在fork模式下,JVM新起了一个进程,这样调试器就 ...

  6. 如何在SAP云平台的Cloud Foundry环境下添加新的Service(服务)

    我想在SAP云平台的Cloud Foundry环境下使用MongoDB的服务,但是我在Service Marketplace上找不到这个服务. cf marketplace返回的结果也没有. 解决方案 ...

  7. 如何在FL Studio中使用自动剪辑(下)

    在上集中我想大家介绍了FL Stduio Automation Clip的创建.播放列表操作及包络线类型介绍,在这篇文章中我将会给大家介绍如何在播放列表中使用Automation,剪辑通道的操作及使用 ...

  8. [干货]kubenertes ingress负载grpc

    目录 概述 搭建 生成公私钥 创建secret 创建ingress 访问 概述 一般情况下,我们的系统对外暴露HTTP/HTTPS的接口,内部使用rpc(GRPC)通讯,这时GRPC在服务之间通过se ...

  9. 【ASP.NET Core学习】远程过程调用 - gRPC使用

    本文介绍在gRPC使用,将从下面几个方面介绍 什么是RPC 什么时候需要RPC 如何使用gRPC 什么是RPC RPC是Remote Procedure Call简称,翻译过来是远程过程调用.它是一个 ...

  10. .Net Core Grpc 实现通信

    .Net Core 3.0已经把Grpc作为一个默认的模板引入,所以我认为每一个.Net程序员都有学习Grpc的必要,当然这不是必须的. 我在我的前一篇文章中介绍并创建了一个.Net Core 3.0 ...

随机推荐

  1. Java-token生成

    1. 引入jar包 <dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt< ...

  2. 解决tomcat8080端口占用问题

    解决tomcat8080端口占用问题 1. 使用管理员权限打开cmd 2. 输入 netstat -ano | findstr 8080 找出占用8080端口的进程pid netstat -ano | ...

  3. 3MP/5MPNetwork-Camera摄像头默认口令

    网络资产搜索: shodan: 找到5MP-Network-Carema 登陆:admin/a***n End!!!

  4. SQL-运算

    dual表可以进行运算select * from dual; 算数运算 + - * /select 5 + 6 as aaa ,6 - 3 as bbb ,5 * 7 as ccc ,9/2 as d ...

  5. sourceTree工具使用方法

    https://www.cnblogs.com/tian-xie/p/6264104.html

  6. dotnet 项目生成自签名证书

    解决dotnet 项目浏览器不安全提示 dotnet dev-certs - 生成自签名证书,以便在开发中使用 HTTPS. dotnet dev-certs https --clean dotnet ...

  7. 通达OA实施的小总结

    1.表格中带有复选框的单独一行单元格(一行两列 表头在第一列 复选框在第二列),在手机上进行显示时,这一行会把行表头屏蔽掉.2.日历控件不要用自定义格式,要不部分手机上无法使用.但是有些手机只能进行填 ...

  8. 微信小程序主包和分包的资源可以相互引用吗

    了解主包.分包 整个小程序所有分包大小不超过20M;单个分包/主包大小不能超过 2M 主包: a. 放置默认启动页面&&tabBar页面, 以及一些分包需要用到的公共资源(如wxss. ...

  9. 面向对象ooDay9

    精华笔记: 多态:多种形态 同一个对象被造型为不同的类型时,有不同的功能-------所有对象都是多态的(明天总结详细讲) 对象的多态:水.我.你...... 同一类型的引用在指向不同的对象时,有不同 ...

  10. PostgreSQL备份与恢复命令

    postgresql备份与恢复相关命令 --备份用户的数据库bct的所有内容pg_dump -U 用户名 -d 库名 -f xxxXXXxxx.sql--删除原有数据库dropdb -U 用户名 -f ...