まずprotoを作成するためにいくつかインストールする必要があります。
環境
・go
・protoc
・protobuf
・protoc-gen-doc
・protoc-gen-swagger
・protoc-gen-gateway
PCにgoをインストールしていない方は、下記の手順でgoのインストールを行ってください。
goのインストール
goのインストール
go install github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger@latest
インストール後に、環境変数の設定も行います。
Windowsの検索欄に「環境変数」と入力して「システム環境変数の編集」を選択します。
システムのプロパティのダイアログが表示されるので、「環境変数(N)...」を選択します。
「GOPATH」にダウンロードしたGoのパスが記載されていることを確認します。
もし環境変数が設定されていない場合は、自分で設定しましょう。
インストールされているかコマンドプロンプトで確認
goのバージョン確認
go version
protoc-gen-docのインストール
protoc-gen-docのインストール
go install github.com/pseudomuto/protoc-gen-doc/cmd/protoc-gen-doc@latest
protoc-gen-swaggerのインストール
protoc-gen-swaggerのインストール
go install github.com/grpc-ecosystem/grpc-gateway/cmd/protoc-gen-swagger@latest
protoc-gen-gatewayのインストール
protoc-gen-gatewayのインストール
go install github.com/grpc-ecosystem/grpc-gateway/cmd/protoc-gen-grpc-gateway@latest
protocをインストール
protocをインストール
protocのzipをインストールします。
https://github.com/protocolbuffers/protobuf/releases
インストール:protoc-XX.X-win64.zip
※XX.Xの箇所はバージョンです。
protocをインストールした後に環境変数を設定します。
ダウンロードしたZIPファイルを適当なディレクトリに解凍します。
例えば、C:\Program Files\protoc など。
解凍したディレクトリには、bin フォルダがあり、その中に protoc.exe ファイルが存在します。
ダウンロードした protoc.exe を利用するために、protoc.exe が存在するディレクトリを環境変数 PATH に追加します。
これにより、どのディレクトリでも protoc コマンドを実行できるようになります。
google.api.httpを利用するために下記コマンドでクローンする。
google/api/http.protoファイルを取得します。
GitHubのWebページから直接ダウンロードするか、Gitを使用してクローンすることができます。
git cloneコマンド
git clone https://github.com/googleapis/googleapis.git
protoファイルを作成するディレクトリを作成
適当な場所にフォルダを作成してoptionフォルダにannotations.proto、http.proto、empty.proto、openapiv2.protoを先ほどダウンロードしたprotocのフォルダの中からコピーして配置します。
フォルダ構成
C:.
│ sample.proto
│
├─html
│ doc.html
│
├─json
└─option
├─google
│ └─api
│ annotations.proto
│ http.proto
│
├─protobuf
│ empty.proto
│
└─swagger
annotations.proto
openapiv2.proto
protoファイルをswagger.json出力
json出力
protoc -I. -I [protoc-gen-gatewayをインストール時のgoogleapisのフォルダパス] -I [protoc-gen-gatewayをインストール時のgrpc-gateway@v1.16.0のフォルダパス] --swagger_out=json_names_for_fields=true:[jsonの出力先] [protoファイル名]
コマンド例は、下記を参考にしてみて下さい。
コマンド例
protoc -I. -I C:\Users\sozelog\go\pkg\mod\github.com\grpc-ecosystem\grpc-gateway@v1.16.0\third_party\googleapis -I C:\Users\sozelog\go\pkg\mod\github.com\grpc-ecosystem\grpc-gateway@v1.16.0/ --swagger_out=json_names_for_fields=true:./json sample.proto
サンプルptoroコード
後日、protoファイルのコード全て公開します。
取り急ぎ、スクショでご勘弁を。
Sample.proto
出力されるjson
jsonに関しても取り急ぎスクショです。。。
sample.swagger.json