ASP.NET Core 6.0 ile Minimal API ve Node.js API + Swagger

Tamer TÜRKSOY
Asis Technologies
Published in
3 min readMay 27, 2022

Merhaba, bu makalede amacım en basit şekilde .net minimal api ve node.js ile swagger ile dokümantasyon UI ile basit bir metodu bulunan api projeleri yazarak bir nevi karşılaştırmak.

Minimal web api ye gelmeden önce .net tarafındaki bazı yeniliklerden de bahsetmek istiyorum. .Net 6 ile güzel ve merak yaratan bazı yenilikler geldi., C#10'a geçilmesi ile beraber global anahtar kelimesi ile using lere eklediğiniz bir referansın tüm projeye referans olarak eklenmesini sağlayabiliyorsunuz. Bunun için artık projede global.cs adında bir dosya açıp içinde global olarak kullanacağımız referansları yazabiliriz.

global using System;

En belirgin yenilendiğini gördüğümüz noktalardan biri, projede artık startup.sc in kaldırılmış oluyor olması. Karşılaştırabilmek adına, .net 6 ile bir minimal api yazalım ve sonrasında node.js ile aynı özelliklere sahip bir api yazalım.

Bu arada minimal API’ler ASP.NET 6'da yeni olarak tanıtıldı. Bu HTTP veya REST hizmetleri oluşturmak için web API nin az detaya girerek küçültülmüş bir alternatifini sunuyor.

Aşağıdaki gibi bir minimal web api oluşturmaya başlayalım. ASP.NET Core Empty template seçerek yeni boş bir proje açıyorum ve .net 6 framework’ünü seçip projemi açıyorum.

Program.cs te yazdığımız aşağıdaki kod parçası ile tek metotlu bir web api hazırdır. Bu arada sadece nuget’ten Swashbuckle.AspNetCore’u yüklemeniz yeterli olacaktır.

program.cs
Swagger UI

tamerturksoy/minimalapi: Node.js ile karşılaştırmak için ASP.NET 6 ile bir minimal api karşılaştırması projesi (github.com)

Şimdi Node.js ile aynısını yapalım;

Node.js kurulu değilse kurulumunu yapmanız gerekmektedir. NodeApi adında bir klasör oluşturdum. Terminalden code . ile VS Code ile projeyi açtım ve ardından studio içinden yeni bir terminal açtım. Terminalden npm init ile açtığım proje klasöründe projeyi başlatıyorum. Proje açılma esnasında proje hakkında sorular soruluyor. Doldurup ya da boş geçip proje açılabilir.

Aşağıdaki satırda göründüğü gibi nodemon ve express i kuruyorum, bundan sonra artık projeye bir index.js dosyası oluşturmam gerekiyor. Daha sonra da package.json dosyası içinde npm start yazıp projeyi çalıştırdığımda nodemon’un hangi dosyayı run edeceğini belirtiyorum; Burada ayrıca swagger tanımı var, onu ilerleyen adımlarda swagger kurulumunu yaptıktan sonra da tanımlanabilir.

npm install nodemon express
package.json

Artık bir test metodu oluşturalım. Bunu index.js te değil, UserApiRoute.js adında bir dosyada yapacağım. Burada amacım sunacağımız api endpoint’lerini birbirlerinden ayırmak. Sonra bu {name}ApiRoutes.js şeklinde isimlendirdiğim kodları routes.js adında bir belgede birleştirmek ve swagger’a kaynak olarak bu belgeyi vermek. Bunu minimal API’de yapabilirdik ama birazda minimalin ne kadar minimal olduğunu göstermek istedim.

Aşağıda index.js , UserApiRoute.js ve routes.js kodlarını paylaşıyorum.

Şimdi de swagger’ı kuralım;

npm install swagger-ui-express — save

Bunun için öncelikle projede swagger.js adında bir dosya oluşturuyorum. Bu dosya Swagger’ın dokümantasyonunu oluşturabilmesi için endpointlerin olduğu dosyayı referans olarak belirtilmeli , bu tanımlamadan sonra bu swagger.js’i npm run swagger-autogen komutuyla çalıştırıp swagger_output.json dosyasının proje içinde otomatik oluşmasını sağlıyorum. Bu JSON dosya içinde swagger UI da görüntülenecek verileri bulunduruyor.

swagger.js

npm start ile projeyi çalıştırınca sonuç aşağıdaki gibidir, buna göre node.js ile olduğu gibi .net 6 minimal api ile de artık hızlı ve minimum kod ile yazılabiliyor.

Node.js

--

--