Créer une gateway d’API dans le cadre d’une solution microservices

Une gateway d’API est une application ou un service responsable de la redirection des requêtes vers un autre service. Cette pratique est très utile et même commune dans le cadre d’une architecture microservices. Cela vous permettra de mutualiser toutes vos API REST en une seule adresse HTTP.

Nous verrons donc ici comment créer cette gateway via OCELOT et effectuer les redirections HTTP vers nos autres services.

Création de la gateway

Il vous faudra commencer par créer un projet ASP .NET Core vide puis installer le package Nuget Ocelot soit via le gestionnaire de packages nuget :

Soit via une commande cli : dotnet add package Ocelot –version 18.0.0

  • Mettez à jour votre Program.cs comme suit :
  • Créez un fichier ocelot.json ensuite à la racine du projet
{
  "Routes": [
    {
      "DownstreamPathTemplate": "/WeatherForecast",
      "DownstreamScheme": "https",
      "DownstreamHostAndPorts": [
        {
          "Host": "localhost",
          "Port": 7268
        }
      ],
      "UpstreamPathTemplate": "/api/weather",
      "UpstreamHttpMethod": [ "Get" ]
    }
  ],
  "GlobalConfiguration": {
    "BaseUrl": "https://localhost:6565"
  }
}

Pour explication, ici nous avons défini une route possible lors des appels

DownstreamPathTemplate: C’est l’url du endpoint qui sera appellée en downstream.
DownstreamHostAndPoints: Le port et l’adresse de l’API en downstream (port 5000 et adresse https://localhost car nous défini le type de connexion en HTTPS.

GlobalConfiguration est l’URL de votre projet de gateway.

Dans votre fichier Program.cs , il va falloir ensuite rajouter la configuration d’Ocelot.

J’ai créé un projet .NET Core 6.0 donc j’ai du rajouter les éléments suivants :

builder.Configuration.AddJsonFile("ocelot.json");

Ceci permet de prendre en compte le fichier créé précedemment.

builder.Services.AddOcelot();

Ici nous injectons le service Ocelot qui fera les redirections.

app.UseOcelot().Wait();

Ici nous l’utilisons dans notre application.

Rajout de notre service/API

Ici il voius suffit de rajout un nouveau projet d’API.

De mon coté j’ai rajouté l’API de base de Visual Studio WeatherForecast.

Maintenant vous n’avez qu’à mettre à jour votre fichier Ocelot afin de pouvoir transmettre les requêtes de la Gateway vers le service.

Ici nous n’avons qu’un service mais cela peut fonctionner avec une multitude services à partir du moment ou ils sont configurés dans votre fichier ocelot.json.

Tests de la redirection

J’ai juste eu à appeler l’url https://localhost:6565/api/weather et mon appel a été automatiquement redirigé vers le service en downstream https://localhost:7268/weatherforecast

Vous êtes maintenant prêts pour vous lancer dans la mise en place de microservices de manière simple!

Le code de l’article est disponible ici : https://github.com/AlexCastroAlex/ApiGateway.Sample

Have fun coding !