Categorygithub.com/patyukin/mbs-api-gateway
module
0.0.0-20241209140520-d5462cde2281
Repository: https://github.com/patyukin/mbs-api-gateway.git
Documentation: pkg.go.dev

# README

API Gateway Service

API Gateway Service — это микросервис, реализованный с использованием HTTP, который служит шлюзом для маршрутизации и управления API запросами к внутренним сервисам.

Визуализация API Gateway и внутренних сервисов Services

@startuml
actor User
database auth
database reports
database accounts
database credits
database notifies


[User] --> [API Gateway]
[API Gateway] --> [Auth service]
[Auth service] --> auth
[Auth service] --> [Notifier service]
[API Gateway] --> [Credit service]
[Credit service] --> credits
[Credit service] --> [Notifier service]
[API Gateway] --> [Account service]
[Account service] --> accounts
[Account service] --> [Notifier service]
[API Gateway] --> [Report service]
[Report service] --> reports
[Report service] --> [Notifier service]

[Notifier service] --> notifies
@enduml

Содержание

Функциональность

  • Регистрация и аутентификация пользователей через auth-service.
  • Обеспечение безопасного взаимодействия между клиентом и внутренними сервисами.
  • Проверка jwt токенов.
  • Интеграция с внутренними микросервисами.

Технологии

  • Go 1.23+
  • HTTP REST
  • net/http — для маршрутизации HTTP-запросов
  • swagger — для автогенерации Swagger-документации
  • Docker (для контейнеризации)

Установка

  1. Клонируйте репозиторий:

    git clone [email protected]:patyukin/mbs-api-gateway.git
    cd mbs-api-gateway
    cp config-example.yaml config.yaml
    
  2. Установите необходимые зависимости:

    make tidy
    

Запуск

Запуск с Docker:

make up

Использование

API Gateway предоставляет REST API-интерфейсы для взаимодействия с внутренними сервисами. Примеры HTTP запросов:

  • Регистрация пользователя:
curl -X POST http://localhost:5000/v1/sign-up \
  -H "Content-Type: application/json" \
  -d '{
    "email": "[email protected]",
    "password": "securepassword123",
    "telegram_login": "johndoe_telegram",
    "first_name": "John",
    "last_name": "Doe",
    "patronymic": "Jonathan",
    "date_of_birth": "1990-01-01",
    "phone": "79000000000",
    "address": "Moscow, Russia, 1, 1, 1"
  }' 

Тестирование

  1. Запуск go тестов

    make test
    
  2. В папке tests запускать тесты HTTP запросов

# Packages

No description provided by the author
Package docs Code generated by swaggo/swag.