91469


protoファイルを作成し、Go、Nuxtでマイクロサービスを作成し、通信をgRPCで行うサービスを開発しております。

ある機能を実現させるため、Youtube Data APIを用いて、取得したデータをフロントサービスにレスポンスとして送ることを考えております。

Youtube Data
APIのレスポンスはJSONオブジェクトとして返却されてきますが、その場合に、protoファイルのメッセージ型の中で、フィールドの型をどのように指定すればよいかわからず、長考しております。

[code]

    message ChannelListResponse{
       ＜型＞ channel_list = 1 ;
    }
    
[/code]

アドバイスをいただけると幸いです。

## 追記：やりたいこと

私が行いたい処理として、"google.golang.org/api/youtube/v3"というパッケージをGoで用いて、Youtube Data
APIレスポンスを取得し、gRPCで通信してフロントサービスへ返却するという処理です。そのため、protoファイルでメッセージ型の中でYoutube
Data APIレスポンスが格納できるフィールドタイプを指定する必要があります。

Goの構造体と同じ扱いができるものをprotoファイルの中で定義できることは、アドバイスをいただき理解ができました。

そして、"google.golang.org/api/youtube/v3"にはYoutube Data
APIレスポンスであるJSONオブジェクトからGoの構造体にデコードするため、独自の構造体とメソッドが定義されております。つまり、フロントサービスへ返却するのは、"google.golang.org/api/youtube/v3"で定義されている構造体から生成されたデータとなります。そのため、Youtube
Data
APIレスポンスをそのままフロントサービスへ返却するには、"google.golang.org/api/youtube/v3"で定義されている構造体と全く同じ構造体を、protoファイルに記述する必要があります。

私が詰まっている点としては、"google.golang.org/api/youtube/v3"で定義されている構造体と全く同じ型定義を、自分で記述する以外に何か良い方法はないのかという点です。


CC BY-SA 4.0
2022-10-05T12:54:58.320
91460
2022-10-07T00:22:55.440
2022-10-07T00:16:54.030
19110
54720
question
go protocol-buffers
protoファイルのメッセージ型の中に記述する、フィールド型の指定する型がわからない


Go でいう構造体の型のようなものを Protocol Buffers の型として定義できるので、これを使うとよさそうです:
<https://developers.google.com/protocol-buffers/docs/proto3#other>

API レスポンスの JSON のスキーマを元に gRPC の型を自動生成することは、やろうと思えばできるとは思いますが、おすすめしません。Protocol
Buffers にはデフォルト値の概念があったりと JSON とは意味論が異なる部分があるというのと、得られた API レスポンスのすべてを gRPC
で返したい場合はほぼ無いだろうというのが理由です。

使いたい API エンドポイントはそう多くはないでしょうし、自分で書いちゃうのが今の時点では一番早いかと思います。


CC BY-SA 4.0
2022-10-06T07:50:11.000
91469
2022-10-07T00:22:55.440
2022-10-07T00:22:55.440
19110
19110
91460
answer