workshop-2

module
v0.0.0-...-018c32b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 1, 2024 License: AGPL-3.0

README

workshop-2

Генрация go файлов из proto файлов

protoc

Официальный компилятор protobuf для генерации кода из proto-файлов

  1. Установка: https://grpc.io/docs/protoc-installation/
  2. man pages: https://manpages.debian.org/testing/protobuf-compiler/protoc.1.en.html
  3. Для генерации нам необходимо:
    • Установить необходимые плагины (см. Makefile .bin-deps)
    • Завендорить внешние proto зависимости (см. Makefile .vendor-proto)
    • Указать все пути для импорта proto-файлов, плагинов и их опции вызова (см. Makefile .protoc-generate)
  4. Вызвать команду make generate (см. Makefile)
buf

Фреймворк для генерации кода из proto файлов

  1. Сайт: https://buf.build/
  2. Установка: https://buf.build/docs/installation
  3. Для генерации нам необходимо:
    • Установить buf (см. Makefile .bin-deps)
    • Завендорить внешние proto зависимости (см. buf.yaml)
    • Указать используемые плагины и их опции вызова (см. buf.gen.yaml)
  4. Вызвать команду make generate-buf (см. Makefile)

Плагины

protoc-gen-go

Документация: https://pkg.go.dev/github.com/golang/protobuf/protoc-gen-go

Плагин необходим для генерации go типов из protobuf. Сгенерированный код находится в файлах с расширением .pb.go.

protoc-gen-go-grpc

Документация: https://pkg.go.dev/google.golang.org/grpc/cmd/protoc-gen-go-grpc

Плагин необходим для генерации реализации gRPC клиента и сервера на go из protobuf. Сгенерированный код находится в файлах с расширением _grpc.pb.go.

protoc-gen-grpc-gateway

Документация:

Плагин необходим для генерации RESTful HTTP API прокси-сервера на go из protobuf. Сгенерированный код находится в файлах с расширением .pb.gw.go.

protoc-gen-openapiv2

Документация:

Плагин необходим для генерации openapiv2 спецификации для вашего RESTful HTTP API прокси-сервера сгенерированного из protobuf. Спецификация находится в файлах с расширением .swagger.json.

protoc-gen-validate

Документация:

Плагин необходим для генерации функций валидации ваших protobuf сообщений на go.

Домашнее задание 2

Перевести всё взаимодействие c сервисами на протокол gRPC. Для этого:

  • Создать protobuf контракты сервисов
  • В каждом проекте нужно добавить в Makefile команды для генерации .go фалйло из proto файлов и установки нужных зависимостей (можно использовать protoc или buf на на свое усмотрение).
  • Сгенерировать клиентов и сервисы
  • Использовать разделение на слои, созданное ранее, заменив слой HTTP на GRPC.
  • Взаимодействие по HTTP полностью удалить и оставить только gRPC.

Дополнительное задание:

  • добавить HTTP-gateway и валидацию protobuf сообщений - 1💎
  • добавить swagger-ui и возможность совершать запросы из сваггера к сервису (поднять swagger-ui сервер) - 1💎

Directories

Path Synopsis
cmd
internal
pkg
api/notes/v1
Package notes is a reverse proxy.
Package notes is a reverse proxy.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL