<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Grpc on Lost Temple</title><link>https://cloudcold.ai/tags/grpc/</link><description>Recent content in Grpc on Lost Temple</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sun, 09 Sep 2018 22:27:17 +0000</lastBuildDate><atom:link href="https://cloudcold.ai/tags/grpc/index.xml" rel="self" type="application/rss+xml"/><item><title>学习go之gRPC-gateway</title><link>https://cloudcold.ai/posts/2018-09-09-%E5%AD%A6%E4%B9%A0go%E4%B9%8Bgrpc-gateway/</link><pubDate>Sun, 09 Sep 2018 22:27:17 +0000</pubDate><guid>https://cloudcold.ai/posts/2018-09-09-%E5%AD%A6%E4%B9%A0go%E4%B9%8Bgrpc-gateway/</guid><description>&lt;p&gt;最近在学Go，对我愚笨的我来说，一个知识点，可能要看几百遍才能懂。比如之前看struct和interface，现在还不是特别熟练。然后项目上说要用protobuf，这个压缩效率比json高，对消息系统来说数据传输会更高效。&lt;/p&gt;
&lt;p&gt;然后我就去网上找了个例子，写了一遍。这里就再写一遍，以来巩固一下自己所学的，而来给后来者可能有一些帮助。&lt;/p&gt;
&lt;p&gt;首先的话要去装protobuf以及go的一些包，这里给出ubuntu的方法，mac的话大同小异，可以自行搜索解决。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt-get update &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt-get -y install git unzip build-essential autoconf libtool
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir -p /tmp 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd /tmp 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git clone https://github.com/google/protobuf 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd protobuf 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;./autogen.sh 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;./configure 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;make 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;make check 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;make install
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;go get github.com/golang/protobuf/proto // golang的protobuf库文件
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway //生成gateway代码的库文件
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger //生成swagger.json的库文件
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;go get -u github.com/golang/protobuf/protoc-gen-go //// 用于根据protobuf生成golang代码，语法 protoc --go_out&lt;span style="color:#f92672"&gt;=&lt;/span&gt;. *.proto
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;当你能够在命令行里面敲下protoc弹出它的usage的时候，就证明你安装成功了。&lt;/p&gt;
&lt;p&gt;以下是我的文件目录结构，放在 $GOPATH/src目录下。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;demo
├── client
│   └── main.go
├── demo_proto
│   ├── demo_proto.pb.go
│   ├── demo_proto.pb.gw.go
│   ├── demo_proto.proto
│   └── demo_proto.swagger.json
├── main.go
├── make.sh
└── server
 └── main.go
 
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;client目录：是grpc的客户端。&lt;/p&gt;</description></item></channel></rss>