Простой gRPC-сервис для управления заказами, написанный на Go.
Эти инструкции помогут вам запустить и настроить проект на вашем локальном компьютере для разработки и тестирования.
Для работы проекта вам понадобятся:
- Go: Версия 1.18 или выше.
- grpcurl: Утилита командной строки для взаимодействия с gRPC-серверами. Инструкция по установке.
-
Клонируйте репозиторий:
git clone <your-repository-url> cd YandexSpecializationPractice
-
Установите зависимости: Выполните команду в корне проекта, чтобы загрузить все необходимые модули.
go mod tidy
Приложение настраивается с помощью переменных окружения. Для удобства вы можете создать файл .env в корне проекта.
-
Создайте файл конфигурации: Скопируйте пример конфигурации в новый файл с именем
.env.copy .env.example .env
-
Отредактируйте
.env: Откройте файл.envи при необходимости измените значения.
| Переменная | Описание | Значение по умолчанию | Пример |
|---|---|---|---|
ENV |
Режим работы приложения. Влияет на уровень логирования (development для более подробных логов). |
development |
production |
PORT |
Порт, на котором будет запущен gRPC-сервер. | 50051 |
8080 |
HTTP_TIMEOUT |
Таймаут для операций. Задается в формате, понятном для time.ParseDuration. |
30s |
1m, 500ms |
Для запуска gRPC-сервера выполните следующую команду из корневой директории проекта:
go run cmd/main/main.goВы должны увидеть сообщение о том, что сервер успешно запущен:
gRPC server is running on localhost:50051
После запуска сервера вы можете отправлять ему запросы с помощью grpcurl.
grpcurl -plaintext localhost:50051 api.OrderService/ListOrdersgrpcurl -plaintext -d '''{"item": "new-shiny-item", "quantity": 10}''' localhost:50051 api.OrderService/CreateOrderВ ответ вы получите id созданного заказа.
Замените your-order-id на реальный ID.
grpcurl -plaintext -d '''{"id": "your-order-id"}''' localhost:50051 api.OrderService/GetOrderЗамените your-order-id на реальный ID.
grpcurl -plaintext -d '''{"id": "your-order-id", "item": "updated-item", "quantity": 20}''' localhost:50051 api.OrderService/UpdateOrderЗамените your-order-id на реальный ID.
grpcurl -plaintext -d '''{"id": "your-order-id"}''' localhost:50051 api.OrderService/DeleteOrder