›› Прочитайте статью полностью на 👉 TheDeveloperCafe ‹‹

Начиная

Twirp — это платформа RPC от Twitch, которая, как и gRPC, использует Protobufs и намного проще. В этой статье я собираюсь дать вам представление о Twirp. Вы можете найти полный код этой статьи в этом репозитории GitHub.

🙋‍♂️ В этой статье предполагается, что вы знакомы с Protobufs и концепцией RPC.

Установочный проект

Инструкции по созданию и установке проекта для protoc tool и twirp/proto.

  1. Создайте новый проект 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/
  1. Установите генераторы 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
  1. Установите в проект модули 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);
}

›› Прочитайте полную статью на 👉 TheDeveloperCafe ‹‹