Skip to content

OpenAPIからgRPCへの移行

   

今あるOpenAPI用の定義yamlファイルからgRPC用のprotoファイルが生成できないかなと思い、検索したら良さそうなものが見つかった。

https://github.com/umemak/eventsite_go/blob/main/openapi.yml でやってみた。

$ go install github.com/NYTimes/openapi2proto/cmd/openapi2proto
$ openapi2proto -spec openapi.yml -annotate
syntax = "proto3";

package eventsite;

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

service EventsiteService {
    // Get all events.
    rpc GetEvents(google.protobuf.Empty) returns (google.protobuf.Empty) {
        option (google.api.http) = {
            get: "/events"
        };
    }

    // Create event.
    rpc PostEvents(google.protobuf.Empty) returns (google.protobuf.Empty) {
        option (google.api.http) = {
            post: "/events"
        };
    }
}

serviceは作られているけど、messageは作ってくれてないっぽい。

protoからOpenAPI作るのは比較的多いけど、その逆はほとんどない。 ということは、両方使いたければマスターはprotoで管理したほうが良いのかもしれない。