Ocelot est un middleware pour .net core qui permet de créer une "gateway" (un point d'entrée) unique pour un ensemble de micro service. C'est une sorte de router.
Par exemple, admetons que l'on est deux services Asp.Net Core (Orders, Customers) qui tournent respectivement sur :
- localhost:7001
- localhost:7002
Chacun ayant un simple controler "racine" qui retourne n'importe quoi.
Ils sont à ce stade joigniables uniquement via ces url. On veut maintenant qu'ils soient tous accesibles depuis localhost:7000 :
- localhost:7000/orders
- localhost:7000/customers
Pour cela on va ajouter le middleware Ocelot https://ocelot.readthedocs.io/en/latest/introduction/bigpicture.html et le configurer avec un fichier de configuration suivant :
{
"ReRoutes": [
{
"DownstreamPathTemplate": "/api/orders",
"DownstreamScheme": "http",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 7000
}
],
"UpstreamPathTemplate": "/orders",
},
{
"DownstreamPathTemplate": "/api/customers",
"DownstreamScheme": "http",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 7000
}
],
"UpstreamPathTemplate": "/customers",
},
],
"GlobalConfiguration": {
"BaseUrl"; "<http://localhost7000>"
}
}
Et hope, on a nos deux services accessible depuis le même point d'entrée (gateway) localhost:7000
Plus de précision avec cette vidéo :