.Net 6 ile Minimal Api geldi. Node.js benzeri tek bir dosyada bütün apimizi yazabiliyoruz. Kullanılabilen record yapısı ile birlikte tek sayfa içinde modelleri ile komple bir api oluşturulabiliyor.
Başlamak için öncelikle dotnet cli üzerinden minimal bir web api oluşturmamız gerekmekte:
Ardından Minimal web api projeniz oluşturulmuş olacak:
Ardından Program.cs’in içine baktığımızda bütün apimizin Program.cs’de olduğunu görmekteyiz.
Endpointler aşağıdaki gibi tanımlanabilmektedir:
app.MapGet("api/getAnil",()=>{
Human human=new Human("anil",88,"Computer Engineer");
return human;
}); //That's so Node.js
Tabi direkt olarak express.js’in eski günlerini hatırlatan bu kullanım yerine aşağıdaki gibi bir kullanım daha mantıklı olacaktır.
Get Parametrelerini yine klasik webapilerdeki gibi kullanabiliyoruz:
app.MapGet("/parametredeneme",(int id,string onemli)=>{
return id+" onemli: "+onemli;
}); //https://localhost:7125/parametredeneme?id=44&onemli=deneme
Aynı şekilde post isteği de aşağıdaki gibi yapılabilmekte:
app.MapPost("/postDeneme",(Human human)=>{
return human;
});
//curl -H "Content-Type: application/json" -X POST -d '{"name":"bir","Age":2,"Profession":"Sociologist"}' https://localhost:7125/postDeneme/
Görüldüğü üzere kullanımı oldukça kolay
Microsoft’un kendi dökümantasyonunda aşağıdaki gibi bir yapı kurulmuş:
app.MapGet("/Model",null);
app.MapGet("/Model/{id}",null);
app.MapPost("/Model",null);
app.MapPut("/Model/{id}",null);
app.MapDelete("/Model/{id}",null);
Şeklinde tam anlamıyla bir model bazlı controller’ın yaptığı bütün işleri yapması istenmekte. Ki gerçekten de yapar.
Tabiki Http kullandığımızı hatırlıyoruz ve istediğimiz status code ile cevap oluşturabiliyoruz:
app.MapGet("/badrequest",()=>{
return Results.BadRequest("Problems");
});
Son olarak yukarıda belirttiğim /Model/{id}‘deki id’yi nasıl aldığımıza gelelim:
app.MapGet("/birdiger/{id}",(int id)=>{
return Results.Ok(id);
}); //https://localhost:7125/birdiger/1446544
Evet gördüğünüz gibi gayet kullanılabilir ve Node.js 🙂 gözüken bir yapı. Özellikle küçük denemeler yaparken şimdiden kullanmaya başladım ben.
Not: Bütün Kodlar Raspberry Pi 400 üzerinde yazılmış ve çalıştırılmıştır.