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 :