Skip to content

gRPC

einride/aip-go使ってみる

filtering package - go.einride.tech/aip/filtering - Go Packages を使おうとしてみたけれど、よくわからない。 aip-go/parser_test.go at master · einride/aip-goを見て、まずInitに文字列渡して、ParseでExprが作られるのはわかった。 そのExprをWarkで見て回るところができず。 とりあえず、入力パターンを制限してstrings.Splitとかでしのいでおく。

gRPC Connect

bufbuild/connect-go: Simple, reliable, interoperable. A better gRPC. テスト用にgRPCのサーバーが欲しかったので、使ってみた。 READMEに書いてあるサンプルのように作ったら、grpcurlでリフレクションのエラーになったので、次世代gRPC?『connect-go』やってみたを参考にリフレクションを入れたら動いた。 ついでにクライアントもConnect Read more

runnでgRPCのテスト2

runnのコマンドライン実行でうまく動かない件、オプション--grpc-no-tlsを指定したら解消した。 デバッグ用に詳細オプションないかなーってコマンドラインヘルプ見ていて見つけた。 マニュアルはちゃんと読みましょう(今年何度目かの反省

runnでgRPCのテスト

gRPCサーバーをテストするのに、fullstorydev/grpcurl: Like cURL, but for gRPC: Command-line tool for interacting with gRPC serversを使っていたのだけど、自動化するのに良いものはないかと探して、k1LoW/runn: runn is a package/tool for running operations following a scenario.を試してみた。 go testから使うのは何となくできたような気がするけど Read more

proto

昨日のエラーは、grpc-ecosystem/grpc-gateway: gRPC to JSON proxy generator following the gRPC HTTP specにあるようにbuf.yamlに deps: - buf.build/googleapis/googleapis を追記してbuf mod updateを実行したら直ったような気がする。 気がする、というのは他にもprotoファイルをダウンロードしてきたりとかいろいろやっていて何が決定打だ Read more

proto

proto定義何もわからない。。 REST用のパスを定義するために option (google.api.http) = { get : "/example-messages/{id}" }; といった定義が必要で、これを使うには import "google/api/annotations.proto"; が必要らしいという理解なのだけど、これをビルドしようとすると event.proto:6:1: Import "google/api/annotations.proto" was not found or had errors. というエラーが出てしまう。 こういうところで躓くの嫌すぎる。

protoをマスターにする

protoをAPIスキーマのマスターにしようとした場合、既存のOpenAPIで用意していたUIとかどうしよう、ということになるけれど、OpenAPI->gRPCとは違って逆の変換はたくさんツールがあることは調査済み。 全体の作りとしてはgrpc-gatewayでgRPCとREST両対応のサーバを Read more

OpenAPIからgRPCへの移行

今あるOpenAPI用の定義yamlファイルからgRPC用のprotoファイルが生成できないかなと思い、検索したら良さそうなものが見つかった。 nytimes/openapi2proto: A tool for generating Protobuf v3 schemas and gRPC service definitions from OpenAPI specifications 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" }; } } s Read more

gRPCを触ってみる

gRPCを触ってみたくなったので、gRPCがフロントエンド通信の第一の選択肢になる時代がやってきたかも? | フューチャー技術ブログをやってみる。 frontendでnpm installするところでgitエラーになってしまう。 $ npm install --save-dev bufbuild/protoc-gen-connect-web bufbuild/protoc-gen-es npm ERR! code 128 npm ERR! An unknown git error occurred npm ERR! command git --no-replace-objects ls-remote ssh://git@github.com/bufbuild/protoc-gen-connect-web.git npm ERR! git@github.com: Permission denied (publickey). npm ERR! fatal: Could not read from remote repository. npm Read more