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

网站举报有奖平台写软文怎么接单子

网站举报有奖平台,写软文怎么接单子,飞机多少钱一架,静态网站用什么做option自定义http规则和http body响应 简介 本篇接上文 golang 工程组件:grpc-gateway 环境安装默认网关测试 默认网关配置终究是难用,本篇介绍一下proto里采用option自定义http规则以及让网关返回http响应而不是我们定义的grpc响应 option定义http…

option自定义http规则和http body响应

简介

本篇接上文

golang 工程组件:grpc-gateway 环境安装+默认网关测试

默认网关配置终究是难用,本篇介绍一下proto里采用option自定义http规则以及让网关返回http响应而不是我们定义的grpc响应

option定义http规则和httpbody响应

引入库。可以直接拷贝grpc-gateway源码下google文件夹到项目下

import "google/api/annotations.proto";
import "google/api/httpbody.proto";
import "google/protobuf/empty.proto";

user.proto

syntax = "proto3";
package  echo;
option go_package = "echo/proto";import "google/api/annotations.proto";
import "google/api/httpbody.proto";
import "google/protobuf/empty.proto";message User{int64 id = 1;// 改成下划线形式string userName = 2[json_name="user_name"];int32 age = 3;string phone = 4;Addr addr = 5;
}message Addr {string province = 1;string city = 2;string county = 3;
}service Echo{rpc Get(User) returns (User) {//get请求option (google.api.http) = {get: "/echo/user/{id}"};}rpc AddOrUpdate(User) returns (User) {option (google.api.http) = {post: "/echo/user"// * 表示接受user所有字段body: "*"additional_bindings {put: "/echo/user"body: "*"}//patch 请求,只更新部分字段additional_bindings {patch: "/echo/user"body: "addr"}};}rpc Delete(User) returns (User) {option (google.api.http) = {delete: "/echo/user/{id}"};}// httpbody响应,前面是grpc定义的消息rpc List(google.protobuf.Empty) returns (stream google.api.HttpBody) {option (google.api.http) = {get: "/echo/user/list"};}
}

对应grpc实现

server.go

package serverimport ("context""echo/proto""fmt""github.com/golang/protobuf/jsonpb"_ "github.com/golang/protobuf/jsonpb""google.golang.org/genproto/googleapis/api/httpbody"_ "google.golang.org/genproto/googleapis/api/httpbody""google.golang.org/protobuf/types/known/emptypb"_ "google.golang.org/protobuf/types/known/emptypb"
)type echoServer struct {proto.UnimplementedEchoServer
}func NewServer() proto.EchoServer {return &echoServer{}
}
func (s *echoServer) Get(ctx context.Context, in *proto.User) (*proto.User, error) {fmt.Printf("%+v\n", in)return in, nil
}
func (s *echoServer) AddOrUpdate(ctx context.Context, in *proto.User) (*proto.User, error) {fmt.Printf("%+v\n", in)return in, nil
}
func (s *echoServer) Delete(ctx context.Context, in *proto.User) (*proto.User, error) {fmt.Printf("%+v\n", in)return in, nil
}func (s *echoServer) List(in *emptypb.Empty, stream proto.Echo_ListServer) error {userList := []*proto.User{{Id:       1,UserName: "test1",Addr: &proto.Addr{Province: "深圳1",},},{Id:       2,UserName: "test2",Addr: &proto.Addr{Province: "深圳2",},},{Id:       3,UserName: "test3",Addr: &proto.Addr{Province: "深圳3",},},}for _, u := range userList {//jsonpb库序列化返回的才是下划线形式。 json序列化不读tag里定义m := jsonpb.Marshaler{}data, _ := m.MarshalToString(u)msg := &httpbody.HttpBody{ContentType: "application/json",Data:        []byte(data),}stream.Send(msg)}return nil
}

启动后按对应路由访问即可。 网关和启动源码在上文里

http://www.wangmingla.cn/news/114178.html

相关文章:

  • 沅江网站设计公司电子营销主要做什么
  • 佛山新网站制作seo网站推广排名
  • 福清建设局网站简介宁波seo软件
  • 官网设计制作什么是seo推广
  • 中纪委网站两学一做征文西安网红
  • wordpress 少数派百度排名优化专家
  • 广州网站优化哪里有深圳百度公司地址在哪里
  • 垂直网站怎么做石家庄网站优化
  • 苏州网站建设师百度推广的广告真实可信吗
  • 如何制作外贸网站服务器域名怎么注册
  • wordpress plugin.php西安seo搜推宝
  • 东莞网站设计智能 乐云践新郑州今日重大新闻
  • 云南 网站模版宁波优化推广找哪家
  • 四川省建设厅网上查询seo建站是什么
  • 找制作网站公司西安百度竞价代运营
  • 一键生成logo设计西安seo按天收费
  • 江西网站建设价位手机怎么制作网页
  • 学校网站建设策划书模板网站关键词优化方法
  • paypal网站集成seo在线短视频发布页
  • 支部网站及活动室建设如何制作网站二维码
  • 网页游戏平台系统西安seo公司
  • php交友网站开发实例夫唯seo怎么样
  • 网站建设与管理小论文百度权重排名
  • 长春地区网站建设百度预测大数据官网
  • 北京管庄网站建设公司百度seo关键词点击软件
  • 河南省建设监理网站东莞seo网站管理
  • 哪些网站做宾馆推广好网络运营怎么学
  • 网站建设的规划书株洲seo优化公司
  • 我司如何自己建设动态网站网络推广公司经营范围
  • 免费设计软件网站google推广一年的费用