Ocelot .Net Core API gateway kullanımı

ihsan güç
3 min readJan 23, 2022

İş değiştirme aklıma koyduğumda genellikle bir sonraki çalışacağım şirketin hangi teknolojilerini kullanıyor diye hep merak etmişimdir gerçekten sayfalarında yazdıklarını kullanıyorlar mı? yoksa ileride kullanırız diye yazıyorlar mı? diye düşünmeden edemiyorum tabi böyle olunca da kullandıkları sistemlere not alırken yazdıklarını bir süre boyuncada olsa araştırıyorum ve sistemleri beni heyecanlandırıyorsa örnek çıkarmayı çok seviyorum. Bununla birlikte Ocelot beni çok meraklandırdı ve küçük bir yazı yazmak istedim. İyi okumalar.

https://github.com/ThreeMammals/Ocelot/blob/develop/images/ocelot_logo.png
Ocelot Logo

Ocelot C# ile yazılımış açık kaynaklı, müşteriden(client) gelen HttpRequest nesnesini arka plandaki servislere ulaştırmakla görevli bir middleware’dir. Client’dan gelen istekleri manipüle ederek belirlenen microservices route (DownstreamPathTemplate Ocelot’da belirlediğimiz microservices route) istek atarak geri dönmemizi sağlar.

Yapacağım uygulama örnek olarak 2 tane microservice, 1 tane api gateway’imiz olacaktır ve microservices olacaktır.

Microserviclerde Swashbuckle.AspNetCore(6.0.1 sürüm) ve Swashbuckle.AspNetCore.SwaggerGen(6.0.1 sürümü) kütüphanesini kullanarak swagger microserviceslere entegre edeceğiz ve ocelot’da MMLib.SwaggerForOcelot (3.2.1 sürüm) kütüphanesini kullanarak ocelot kısmından appler arası kolayca geçiş yapılabilecektir.

Microservicler için aşağıdaki ayarlara yaparak swaggerı projeye entegre edilir.

Swagger durumları entegre edildikten sonra başlangıçta eklediğimiz microservicesler sistemde aynı port (5001 veya 5000) port kullanırlar Properties > launchSettings.json gidip port ayarlarını farklı yapmamız lazım çünkü ocelot için gerekli olacaktır. applicationUrl kısmından port ayarları yapılabilir. Yapılanan işlemler 1 microservis için nasıl yapıldıysa ikinci içinde aynı ayarlar yapılacaktır. Microservicler bittikten sonra sıra ocelota geçebiliriz. Ocelot (16.0.1 sürümü) kütüphanesini kullanacağız.

Başlangıçta ocelot’un sistem parametrelerini kullanması için bir tane ocelot.json dosyası oluşturulacaktır ve eğer farklı ortamda çalışıyorsanız ocelot.dev.json veya ocelot.prod.json oluşturarak ortamlara göre geçiş sağlanabilir

Program.cs kısmını ayarlıyoruz ve Environment.GetEnvironmentVariable durumu çalıştığımız ortamı gösteriyor ve hangi ortamda isek otomatik olarak o isimle ocelot sisteme dahil olacaktır. Properties > launchSettings.json Port değişikliği yapmayı unutmayın.

Startup.cs kısmında eklediğimiz RequestInspector ocelot kımına gelen requestleri console ekranına yazdırmak için, AddSwaggerForOcelot swagger için yaptığımız ayardır.

Ocelot.dev.json da

  • UpstreamPathTemplate: Ocelot kısmına atacağımız route belirleriz.
  • UpstreamHttpMethod: Hangi istek türünde yapacağımızı belirleriz.
  • DownstreamPathTemplate: Yönlendirilecek microservicesin route’nun yollu.
  • DownstreamHostAndPorts: Host ve port bilgilerini tutar.
  • SwaggerEndPoints: Swagger ayarlarını yaptığımız yerdir, Key unique olarak belirlenir, Config diğer microservice’lerin ayarlı.
  • SwaggerKey: SwaggerEndPoints ayarladığımız ve unique olarak verdiğimiz key parametresi hangi microservice’de ise ona göre yazıyoruz.

Bütün ayarlar yapıldıktan sonra gelen istekleri console ekranına yazdırdığımızdan dolayı error olduğu durumlarda console ekranına yazdırıyoruz ve aşağıdaki gift’te görüldüğü gibi swaggerlar arası geçiş yapabiliyorsunuz yaptığınız değişikler anlık olarak console ekranına yansıyacaktır.

Yeni mimariler, yeni sistemler, bir şeyler öğrenmek her zaman mutluluk verir.

Kaynak

Okuduğunuz için teşekkürler. Bir sonraki yazıda görüşmek dileğiyle…

--

--