Swagger for Ocelot API Gateway (SK)
Ak vyvíjate mikroslužby, tak určite používate nejakú formu API Gateway. A ak vyvíjate v prostredí .NET Core, tak to bude s veľkou pravdepodobnosťou Ocelot.
Ocelot je skvelý projekt na vytvorenie vlastnej API Gateway. Bohužiaľ, ale neumožňuje jednu podľa mňa dôležitú vec a to integráciu swagger domentácií vaších mikroslužieb (viď dokumentácia).
MMLib.SwaggerForOcelot
Projekt MMLib.SwaggerForOcelot prináša možnosť, ako toto dosiahnuť. Umožňuje vám prezerať dokumentáciu mikroslužieb priamo cez Ocelot API Gateway. Na jednom mieste máte k dispozícií dokumentáciu celého vášho systému. MMLib.SwaggerForOcelot transformuje dokumentáciu mikroslužieb tak, aby bola správna z pohľadu API Gateway-a. Takže upraví adresy a odstráni endpointy, ktoré nie sú cez API Gateway routované von.
Ako na to?
- Nakonfiguruj SwaggerGen vo vaších mikroslužbách.
- Nainštaluj MMLib.SwaggerForOcelot do vášho Ocelot projektu
dotnet add package MMLib.SwaggerForOcelot
- Nakonfiguruj MMLib.SwaggerForOcelot v
ocelot.json
{ "Routes": [ { "DownstreamPathTemplate": "/api/{everything}", "UpstreamPathTemplate": "/api/contacts/{everything}", "ServiceName": "contacts", "SwaggerKey": "contacts" }, { "DownstreamPathTemplate": "/api/{everything}", "UpstreamPathTemplate": "/api/orders/{everything}", "ServiceName": "orders", "SwaggerKey": "orders" } ], "SwaggerEndPoints": [ { "Key": "contacts", "Config": [ { "Name": "Contacts API", "Version": "v1", "Url": "http://localhost:5100/swagger/v1/swagger.json" } ] }, { "Key": "orders", "Config": [ { "Name": "Orders API", "Version": "v1", "Url": "http://localhost:5200/swagger/v1/swagger.json" } ] } ], "GlobalConfiguration": { "BaseUrl": "http://localhost" } }
- V metóde
ConfigureServices
triedyStartup.cs
registrujte MMLib.SwaggerForOcelot generátor.services.AddSwaggerForOcelot(Configuration);
- V metóde
Configure
triedyStartup.cs
registrujte middleware, ktorý sprístupní dokumentáciu.services.UseSwaggerForOcelotUI(Configuration);
Sekcia SwaggerEndPoints
obsahuje konfigurácie potrebné na získanie dokomentácií jednotlivých mikroslužieb. Property Key
sa používa na párovanie s ReRoute
konfiguráciou. Name
sa zobrazuje v combobox-e. Url
je adresa k dokumentácií danej mikroslužby. Pokiaľ máte viac verzií vášho api, tak v sekcii Config
to môžete zohľadniť. Napríklad:
"Key": "orders",
"Config": [
{
"Name": "Orders API",
"Version": "v1",
"Url": "http://localhost:5200/swagger/v1/swagger.json"
},
{
"Name": "Orders API",
"Version": "v2",
"Url": "http://localhost:5200/swagger/v2/swagger.json"
}
]
Následne máte swagger dokumentáciu pre váš systém dostupnú na adrese http://ocelotserviceurl/swagger
.
Viac info priamo v repe MMLib.SwaggerForOcelot.