- ФИО: Мельникова Анастасия Сергеевна
- Группа: 220032-11
- Вариант: 3
- Go (Gin)
- Python (FastAPI)
- JWT аутентификация
- Docker / Docker Compose
- HTTP взаимодействие между сервисами
Система из двух сервисов:
- Go-сервис предоставляет API с валидацией и JWT-аутентификацией
- Python-сервис взаимодействует с Go-сервисом, отправляя и принимая JSON-данные
Сервисы развёрнуты через Docker Compose и работают в одной сети.
- Задание 3: реализована валидация входных данных в Go через Gin binding.
- Задание 5: реализована передача сложных JSON-структур между Go и Python сервисами.
- Задание 7: реализован graceful shutdown в Go и Python сервисах.
- Задание 3: добавлена JWT-аутентификация в Go-сервисе и проверка токенов в Python.
- Задание 5: оба сервиса развёрнуты через Docker Compose в общей сети.
go-service/- Gin-сервис с JWT, валидацией и graceful shutdown.python-service/- FastAPI-сервис, который валидирует JWT и передаёт JSON в Go-сервис.docker-compose.yml- совместный запуск обоих сервисов.PROMPT_LOG.md- лог работы с ИИ.
cd go-service
go mod tidy
go test ./... -coverprofile=coverage.out
go run ./cmd/serverGo-сервис будет доступен по адресу http://localhost:8080.
Требуется установленный Python 3.12+.
cd python-service
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r requirements.txt
pytest
uvicorn app.main:app --host 0.0.0.0 --port 8000Python-сервис будет доступен по адресу http://localhost:8000.
Требуется установленный Docker Desktop.
docker compose up --buildПосле запуска:
- Go-сервис:
http://localhost:8080 - Python-сервис:
http://localhost:8000
POST /auth/token
Content-Type: application/json
{
"username": "student",
"password": "securepass123"
}POST /api/forward
Authorization: Bearer <jwt>
Content-Type: application/json
{
"request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"customer": "Ivan Petrov",
"address": {
"city": "Moscow",
"street": "Tverskaya 1",
"zip_code": "123456"
},
"items": [
{
"name": "keyboard",
"quantity": 2,
"price": 1500.5
}
],
"metadata": {
"priority": "high",
"tags": ["study", "api"]
}
}