当前位置: 首页 > news >正文

网站单页设计steam交易链接在哪看

网站单页设计,steam交易链接在哪看,电商网站建设流程图,广告业网站开发今天来分享一波 gRPC-Gateway , 之前咱们有分享过什么是 gRPC 及其使用方式,可以看看这些关于 gRPC 的历史文章: gRPC介绍 gRPC 客户端调用服务端需要连接池吗? gRPC的拦截器 gRPC的认证 分享一下 gRPC- HTTP网关 I 今天主要是分…

今天来分享一波 gRPC-Gateway , 之前咱们有分享过什么是 gRPC 及其使用方式,可以看看这些关于 gRPC 的历史文章:

  • gRPC介绍
  • gRPC 客户端调用服务端需要连接池吗?
  • gRPC的拦截器
  • gRPC的认证
  • 分享一下 gRPC- HTTP网关 I

今天主要是分享关于 gRPC-Gateway 的实战部分,文章大体分为如下几个部分:

  • gRPC-GateWay 简单原理介绍
  • 基本环境创建
  • gRPC-GateWay 实战

gRPC-GateWay 简单原理介绍

如下是官网的一张基本原理图

gRPC-Gateway 是一个协议插件,它读取一个 gRPC 服务定义,并生成一个反向代理服务它将一个 RESTful JSON API 转换为 gRPC ,这个服务器是根据gRPC定义中的自定义选项生成的。

简单来说,咱们的 gRPC-Gateway 能做到的事情就是:

能够提供 RESTful JSON API 接口,并且请求通过 http 接口打进来,gRPC-Gateway 能够将其请求转给 grpc 服务,最终 grpc 服务进行处理并响应

接下来,我们就来看看 gRPC-Gateway 是如何同时提供 http 接口和 grpc 服务的

基本环境创建

使用 gRPC-Gateway ,我们需要搭建基本的环境,正如之前我们实战 grpc 的时候,需要搭建一个基本的 grpc 环境,总的来说需要做如下事项:

  1. 开始创建自己的项目目录
mkdir my_grpcgateway
cd my_grpcgateway
mdkir protoc/order
cd protoc/order
  1. 下载 gRPC-Gateway 的依赖
$ go get github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway
$ go get google.golang.org/protobuf/cmd/protoc-gen-go
$ go get google.golang.org/grpc/cmd/protoc-gen-go-grpc
  1. 检查工具,执行完第二步之后,我们可以看到咱们将 gRPC-Gateway 的依赖库和工具都下载下来了,咱们可以看到在我们的 GOPATH 目录下有如下工具

  • protoc-gen-go
  • protoc-gen-grpc-gateway
  • protoc-gen-go-grpc
  • protoc
  1. 将依赖库的 google/api 拷贝到咱们的 order 目录下

这个时候我们主要是后续实战会使用库里面的 annotations.proto他的作用就是将 HTTP 映射成 gRPC,目录是这样的

google/
├── api
│   ├── annotations.proto
│   ├── httpbody.proto
│   └── http.proto

例如我的 GOPATH 在 “/root/go” ,因此我们可以这样来复制

cp /root/go/pkg/mod/github.com/grpc-ecosystem/grpc-gateway@v1.16.0/third_party/googleapis/google/api/ ./

接下来就可以进入到实战部分了,目前,我们的目录是这样的

my_grpcgateway/
├── protoc
│   └── order
│       ├── google
│       │   ├── api
│       │   │   ├── annotations.proto
│       │   │   ├── httpbody.proto
│       │   │   └── http.proto

gRPC-GateWay 实战

来到实战部分,先说一下咱们的需求:

  • 咱们客户端通过请求服务端接口,查询订单信息

这个时候,其实我们只需要走如下 3 步骤即可

  1. 编写 proto 文件
  1. 用工具生成相应的代码
  1. 填写相应的代码逻辑即可

编写 proto 文件

在上述的 my_grpcgateway/protoc/order 下 创建 文件 order.proto

cd my_grpcgateway/protoc/order
vim  order.proto

image.png

编写 order.proto 文件的时候我们导入了annotations.proto 文件 import "google/api/annotations.proto";

另外,我们在编写 proto 的时候,现在多定义了一个 Service

service Order {rpc GetOrderInfo (GetOrderReq) returns (GetOrderRsp) {option (google.api.http) = {post: "/v1/order/getorder"body: "*"};};
}

那通过我们写的 order.proto 文件,我们知道,咱们定义的

  • HTTP 接口是 POST /v1/order/getorder
  • gRPC 接口是 GetOrderInfo

用工具生成相应的代码

protoc -I ./ \--go_out ./ --go_opt paths=source_relative \--go-grpc_out ./ --go-grpc_opt paths=source_relative \--grpc-gateway_out ./ --grpc-gateway_opt paths=source_relative \./order.proto

我们生成的文件存放目录都是当前目录,使用 protoc 工具生成代码后,我们可以看到 order 目录下是这样的

# ls
google  order_grpc.pb.go  order.pb.go  order.pb.gw.go  order.proto

这个时候,其实我们本次最关注的是 order.pb.gw.go 文件的生成

填写相应的代码逻辑即可

那这个时候,我们就可以创建代码文件来实现上述的 gRPC 接口,以及初始化 gRPC 服务和 gRPC-Gateway 的反向代理了

  1. 在 my_grpcgateway 目录下创建 main.go

image.png

  1. 在 my_grpcgateway 下创建 server 目录,并在 server 目录下编写 server.go
mkdir server 
cd server
vim server.go

server.go
image.png

image.png

image.png

  1. 回到 my_grpcgateway ,创建 mod,拉依赖包,并运行代码
go mod init mytest
go mod tidy
go run main.go

这个时候,我们可以看到 6666 端口,和 9999 端口都被服务监听着,此时我们来请求 9999 的 HTTP 端口,如下:

服务端已经启动:

客户端可以使用 postman 来请求接口:

当然也可以在 linux 里面使用 curl 来请求接口

curl -X POST -d '{"tid":"0001-000001", "tenant_name":"test tenant", "order_id":"1000-1000001"}' http://localhost:9999/v1/order/getorder

写在最后

至此,我们从 gRPC-Gateway 的基本原理到快速实战,相信 xdm 能够有一定的收获吧,赶紧动起手来实战一波,并加入自己的想法变着花样的去玩他

使用 gRPC-Gateway 可以极大的提高我们的效率,直接实现 grpc 服务接口也可以提供 http 接口出去

下一篇,将会是 gRPC-Gateway Swaager 相关,能够让我们提供出去的接口更加友好和方便

项目代码可以查看地址:https://github.com/qingconglaixueit/my_grpcgateway_demo

感谢阅读,欢迎交流,点个赞,关注一波 再走吧

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~

可以进入地址进行体验和学习:https://xxetb.xet.tech/s/3lucCI

http://www.yidumall.com/news/91811.html

相关文章:

  • 外贸b2c平台都有哪些网站西安网站设计开发
  • 做网站推广的销售电话开场白百度新闻网
  • 为外国人做非法网站今日实时热点新闻事件
  • 网站建设dw站点建设360竞价推广技巧
  • b2b电子商务网站调研报告电大作业直播网站排名
  • 莒县网站制作网络广告策划书
  • Wordpress制作一个时间轴浙江关键词优化
  • 网站建设倒计时模板seo公司上海
  • 中文网址大全2345智能网站推广优化
  • 网站建设合同模版企业网站模板设计
  • wordpress 当前分类名称百合seo培训
  • 免费的二维码生成软件关键词优化有哪些作用
  • 深圳坂田做网站seo如何优化
  • 女人做一级a网站免费友情链接网站免费
  • 石家庄学网站建设东莞关键词排名快速优化
  • 万网域名管理平台登录珠海百度关键词优化
  • 设计工作网站做网络销售如何找客户
  • 网站开发类的合同青岛网站建设制作推广
  • 苏州网站建设网站优化做一个网站要多少钱
  • 网页网站建设网站建设加推广优化
  • 公司做网站费会计科目百度推广优化排名怎么收费
  • 中国最大的b2b网站是南宁网络推广品牌
  • 在上海做网站2020年度关键词有哪些
  • wordpress站群管理破解版北京seo排名优化网站
  • 网站权重收录广告推广方案怎么写
  • 网站制作设计正规公司培训机构有哪些
  • 生日祝福网站开发优化大师如何删掉多余的学生
  • 专做sm的网站重庆seo论
  • 网站不进行公安局备案会怎样郑州seo公司排名
  • 成都设计公司怎么选南宁seo服务公司