grpc-webを使っているともうなかなかRESTには戻れない@kkkkkです。
今回はprotocol buffersの定義で結構便利な
https://github.com/protocolbuffers/protobuf
についてimportする方法を紹介します。
色々やり方はあると思いますが、
git submodulesでvendorとしてimportするのが楽かなと思ってます(他に良い方法あったら教えて下さい)。
vendorにgit submodulesをaddする
$ tree -L 2
.
├── articles
│ └── show.proto
├── helloworld.proto
└── vendor
└── protobuf
3 directories, 2 files
の状態になるようにします。
mkdir vendor
cd vendor
git submodule add https://github.com/protocolbuffers/protobuf.git
これでvendor作成!
protocでprotobuffers/protobufのimport方法
例は適当なメディアの記事詳細APIとかのイメージです。
articles/show.proto
syntax = "proto3";
import "google/protobuf/timestamp.proto";
package articles;
service ArticleService {
rpc Show(ShowArticleRequest) returns (ShowArticleResponse);
}
message ShowArticleRequest {
int64 id = 1;
}
message ShowArticleResponse {
int64 id = 1;
string title = 2;
string description = 3;
string contents = 4;
string img_url = 5;
int64 category_id = 6;
string keywords = 7;
google.protobuf.Timestamp created_at = 8;
}
で作成。
import "google/protobuf/timestamp.proto";
でimportして
google.protobuf.Timestamp created_at = 8;
で宣言します。
上記のrootディレクトリで以下実行。
#!/bin/sh
SERVER_OUTPUT_DIR=outputdir
mkdir -p ${CLIENT_OUTDIR} ${SERVER_OUTPUT_DIR}
protoc --proto_path=. --proto_path=vendor/protobuf/src articles/show.proto \
--go_out=plugins=grpc:${SERVER_OUTPUT_DIR}
-Ivendor/protobuf/src
でprotoc
コマンド実行時にprotobuf/src
をimportすること!
gRPC良いね!