Nedir bu Minimal API — NET6 Yenilikleri

Salih Cantekin
3 min readOct 3, 2021

--

Microsoft teknolojilerini ilk kullanmaya başladığımdan andan beri en çok sevdiğim şeylerden birisi Microsoft’un standartlarının olmasıydı. Bunu sadece Microsoft standartı olarak adlandıramayız belki ama bu standartların uygulanması ve uygulanmasının kolaylaşması için çalışmaları olduğunu göz ardı etmek yanlış olur. Bu standartlardan bazıları ise şöyle listelenebilir; isimlendirme standartları, özelleştirilebilir isimlendirme kuralları, interface lerin içerisinde kod yazımına izin verilmemesi, erişim belirleyicilerin kullanılması için kullanılan IDE lerde ki uyarılar vs.

Her ne kadar bu konularda standartlar olsa da bazen değişmek de gerekiyor. Microsoft .Net Core geliştirmesinden önce neredeyse kendisini hiç geliştirmiyordu ancak Open-Source’a geçildiği andan itibaren artık değişimin kaçınılmaz olduğunu kabullendi çok da güzel yaptı. Bu değişimlerden birisi interface ler içerisinde static metodlar yazabiliyor olmamızdı. C# 8 ile birlikte hayatımıza giren bu gelişmede aşağıdaki gibi bir yapı oluşturabiliyoruz ancak burada altı çizilmesi gereken nokta metodumuzun bir “Body” si olamıyor olması ama yinede bence yıllardır “interface içerisinde kod olmaz” mantığını değiştirmek için böyle bir şey yapıyor olması benec güzeldi.

public interface IMyInterface
{
static string GetHello() => "Default Hello from interface" ;
static void WriteWorld() => Console.WriteLine("Writing World from interface");
}

Diğer yandan da .Net Core hatta Net5 ve Net6 ile başka başka yenilikler de geliyor hayatımıza. Son dönemde teknolojinin de çok hızlı gelişmesi ile birlikte yeni programlama dilleri, yeni yaklaşımlar ve mimari paternler de hayatımızda yer almaya başladı. Bununla birlikte kodlar sadeceleşmeye ama sadeleşmiş olmasına rağmen ise özelliklerinden de bir şey kaybetmemeye başladı. Özellikle Python ve Go gibi güçlü dillerde “Syntax” kısmının çok sade olması da bu dillerin kullanım oranını artırmıştır bence.

.Net Core kullanarak bir WebApi veya bir MVC projesi geliştirme istediğimizde Visual Studio bizim için bir sürü kodu oluşturup karşımıza çıkartıyor sağolsun ama bu durum Visual Studio veya C# kullanmaya yeni başlamış birisi için veya Go/Python gibi dillere aşina olan insanlar için garip bir durum olarak görülebilir çünkü bir sürü dosya var etrafta :) Ayarlar için dosya, Startup.cs, Program.cs, Controller dosyaları vs.

NET6 ile hayatımıza Microsof’un them bu sadeliği yakalayabilmek için çalıştığını hem de NET6 Framework’ü ile bir çok şeyin artık daha kolay olduğunu gösterebilmek için bir hamlesi oldu. “Minimal API” dediğimiz kavram hayatımıza girdi. Peki nedir bu minimal API?

Aslında tam da adı üstünde, bir API projesi başlattığınızda bunun olabilecek en minimal hali karşımıza geliyor ve bu şekilde kullanmaya başlıyoruz. Tam olarak göstermek istersek yeni bir minimal API projesi oluşturduğumuzda aşağıdaki kodları içeren “TEK” bir dosya oluşuyor ve bu bütün projemiz anlamına geliyor.

Minimal API initialized code

Burada bir “Application” oluşturabilmek için bir Builder ve bu uygulamamızı konfigure edebilmek için bazı kod satırları görüyoruz ama aslında bütün kodumuz bu kadar. Bu uygulama çalıştığında “/” dizini yani ana dizine gelen isteklere “Hello World!” cevabı dönen bir de “endpoint” var. Bu projenin minimal olması minimal kalması anlamına gelmiyor elbette. Bu uygulamayı istersek geliştire de biliyoruz. Mesela Swagger eklemek istiyorsak aşağıdaki hale getirebiliriz.

minimal API with Swagger

builder.Services altındaki metodları kullanarak “Dependency Injection” işlemlerimizi de gerçekleştirebiliyoruz tabi ki. O da şöyle görünüyor.

minimal API with dependency injection

Minimal API’ın yeni framework ile gelmesini bir kaç temel noktaya bağlayabiliz bence. Hem “Yeni çağa da ayak uyduruyorum”, “Öyle bir framework ortaya çıkarttık ki bu tarz büyük değişiklikleri bile çok hızlı implemente edebiliyoruz” hem de “Kullanıcılarımızı da önemsiyor ve geri dönüşlerini dikkatle dinliyoruz” mesajlarını içeriyor bu tarz yenilikler.

Microsoft’un başka yeniliklerinde görüşmek dileği ile.

--

--

No responses yet