APIGateway — это микросервис из 5-ой лабоработрной работы для маршрутизации запросов к другим микросервисам, таким как UserService, EventService, ObjectService, и TicketService. API Gateway предоставляет единый интерфейс для взаимодействия с микросервисами и упрощает управление ими.
APIGateway/
├── Dependencies/ # Зависимости проекта, подключенные через NuGet
├── Properties/ # Конфигурационные файлы и параметры запуска
│ ├── appsettings.json # Основные настройки приложения
│ ├── appsettings.Development.json # Настройки для режима разработки
│ ├── launchSettings.json # Настройки запуска приложения
│ └── ocelot.json # Конфигурация Ocelot для маршрутизации
└── Program.cs # Точка входа в приложение
API Gateway использует библиотеку Ocelot для маршрутизации запросов. Основные маршруты описаны в файле ocelot.json. Ниже представлены примеры маршрутов, уже настроенных для взаимодействия с микросервисами:
{
"Routes": [
{
"DownstreamPathTemplate": "/api/users",
"DownstreamScheme": "http",
"DownstreamHostAndPorts": [
{ "Host": "localhost", "Port": 5137 }
],
"UpstreamPathTemplate": "/gateway/users",
"UpstreamHttpMethod": [ "Get", "Post" ]
},
{
"DownstreamPathTemplate": "/api/users/{id}",
"DownstreamScheme": "http",
"DownstreamHostAndPorts": [
{ "Host": "localhost", "Port": 5137 }
],
"UpstreamPathTemplate": "/gateway/users/{id}",
"UpstreamHttpMethod": [ "Get", "Put", "Delete" ]
},
{
"DownstreamPathTemplate": "/api/events/{everything}",
"DownstreamScheme": "http",
"DownstreamHostAndPorts": [
{ "Host": "localhost", "Port": 5294 }
],
"UpstreamPathTemplate": "/gateway/events/{everything}",
"UpstreamHttpMethod": [ "Get", "Post", "Put", "Delete" ]
},
{
"DownstreamPathTemplate": "/api/objects/{everything}",
"DownstreamScheme": "http",
"DownstreamHostAndPorts": [
{ "Host": "localhost", "Port": 5294 }
],
"UpstreamPathTemplate": "/gateway/objects/{everything}",
"UpstreamHttpMethod": [ "Get", "Post", "Put", "Delete" ]
},
{
"DownstreamPathTemplate": "/api/tickets/{everything}",
"DownstreamScheme": "http",
"DownstreamHostAndPorts": [
{ "Host": "localhost", "Port": 5294 }
],
"UpstreamPathTemplate": "/gateway/tickets/{everything}",
"UpstreamHttpMethod": [ "Get", "Post", "Put", "Delete" ]
}
],
"GlobalConfiguration": {
"BaseUrl": "http://localhost:5285"
}
}- .NET 8.0 (или новее)
- IDE с поддержкой .NET
- Ocelot (подключается через NuGet)
- Склонируй репозиторий:
git clone https://github.com/Nata-Practices/APIGateway.git
- Перейди в папку проекта:
cd APIGateway - Установи зависимости:
dotnet restore
-
Запусти связанные микросервисы:
- Убедись, что микросервисы
SwaggerAPIиUserServiceзапущены.
- Убедись, что микросервисы
-
Соберите проект API Gateway:
dotnet build
-
Запустите сервер API Gateway:
dotnet run
Приложение будет доступно по адресу
http://localhost:5285.
GET /gateway/users— получить всех пользователейPOST /gateway/users— создать нового пользователяGET /gateway/users/{id}— получить пользователя по idPUT /gateway/users/{id}— обновить пользователя по idDELETE /gateway/users/{id}— удалить пользователя по id
GET /gateway/events— получить список событийPOST /gateway/events— создать новое событиеGET /gateway/events/{id}— получить событие по idPUT /gateway/events/{id}— обновить событие по idDELETE /gateway/events/{id}— удалить событие по id
GET /gateway/objects— получить список объектовPOST /gateway/objects— создать новый объектGET /gateway/objects/{id}— получить объект по idPUT /gateway/objects/{id}— обновить объект по idDELETE /gateway/objects/{id}— удалить объект по id
GET /gateway/tickets— получить список билетовPOST /gateway/tickets— создать новый билетGET /gateway/tickets/{id}— получить билет по idPUT /gateway/tickets/{id}— обновить билет по idDELETE /gateway/tickets/{id}— удалить билет по id
- API Gateway упрощает доступ к нескольким микросервисам через единый адрес.
- Поддерживает маршрутизацию, фильтрацию и обработку ошибок с использованием Ocelot.