›› Прочитайте статью полностью на 👉 TheDeveloperCafe ‹‹
Начиная
Twirp — это платформа RPC от Twitch, которая, как и gRPC, использует Protobufs и намного проще. В этой статье я собираюсь дать вам представление о Twirp. Вы можете найти полный код этой статьи в этом репозитории GitHub.
🙋♂️ В этой статье предполагается, что вы знакомы с Protobufs и концепцией RPC.
Установочный проект
Инструкции по созданию и установке проекта для protoc tool и twirp/proto.
- Создайте новый проект Go.
$ mkdir go-twirp-rpc-example $ cd go-twirp-rpc-example $ go mod init github.com/gurleensethi/go-twirp-rpc-example
Создайте в проекте три папки server
, client
и rpc
, чтобы структура папок выглядела так.
go-twirp-rpc-example/ ├─ client/ ├─ server/ ├─ rpc/ ├─ notes/
- Установите генераторы protoc и twirp-protoc (это инструменты cli).
$ go install github.com/twitchtv/twirp/protoc-gen-twirp@latest $ go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
- Установите в проект модули protobuf и twirp.
$ go get github.com/twitchtv/twirp $ go get google.golang.org/protobuf
Написание прото-файла
Поскольку Twirp использует Protobuf для создания клиентов, нам нужно написать файл .proto
.
Вы будете создавать простое приложение для создания заметок, которое имеет только две функции:
1. Получить все заметки.
2. Создайте новую заметку.
Вот модель определения прототипа (храните ее в rpc/notes/service.proto
).
syntax = "proto3"; package gotwirprpcexample.rpc.notes; option go_package = "rpc/notes"; message Note { int32 id = 1; string text = 2; int64 created_at = 3; } message CreateNoteParams { string text = 1; } message GetAllNotesParams { } message GetAllNotesResult { repeated Note notes = 1; } service NotesService { rpc CreateNote(CreateNoteParams) returns (Note); rpc GetAllNotes(GetAllNotesParams) returns (GetAllNotesResult); }