Tag Archives: minimal api

Minimal API | Route Handler için Response çeşitleri

Minimal API içerisinde bir route handler’dan döndürülebilecek response çeşitlerini ele aldık bu videoda.

✅Github reposu: https://github.com/sonergonul/MinimalAPI

Response çeşitleri şu şekilde;

➡️ IResult – Task<IResult> veya ValueTask<IResult>

➡️ string – Task<string> veya ValueTask<string> – text/plain

➡️ T – Json seralize – application/json

🟢 app.MapGet("/response1", () lambda "Hello World");

🟢 app.MapGet("/response2", () => new { Message = "Hello World" });

🟢 app.MapGet("/response3", () => Results.Ok(new { Message = "Hello World" }));

🟢 app.MapGet("/response4", () => Results.Json(new { Message = "Hello World" }));

🟢 app.MapGet("/405", () => Results.StatusCode(405));

🟢 app.MapGet("/text", () => Results.Text("This is some text"));

🟢 app.MapGet("/old-path", () => Results.Redirect("/new-path"));

🟢 app.MapGet("/download", () => Results.File("C:/appsettings.json", contentType: "application/json", fileDownloadName: "appsettings.json"));

Minimal API | In-memory veritabanı ile CRUD işlemleri | 2. Kısım

Minimal API içinde, bir in-memory veritabanında update ve delete işlemlerini nasıl yapabileceğimizi öğrendik.

✅Github reposu: https://github.com/sonergonul/MinimalAPI

Update işlemi:

app.MapPut("/customers/{id}", async (CustomerDb db, Customer newCustomer, int id) =>
{
    var current = await db.Customers.FindAsync(id);

    if (current == null) return Results.NotFound();

    current.Name = newCustomer.Name;
    await db.SaveChangesAsync();

    return Results.NoContent();
});

Delete işlemi:

app.MapDelete("/customers/{id}", async (CustomerDb db, int id) =>
{
    var current = await db.Customers.FindAsync(id);

    if (current == null) return Results.NotFound();

    db.Customers.Remove(current);
    await db.SaveChangesAsync();

    return Results.Ok();
});

Kaynaklar:

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/minimal-apis?view=aspnetcore-6.0

https://docs.microsoft.com/en-us/aspnet/core/tutorials/min-web-api?view=aspnetcore-6.0&tabs=visual-studio

Minimal API | In-memory veritabanı ile CRUD işlemleri | 1. Kısım

Minimal API ile in-memory veritabanı ile CRUD işlemlerinden listeleme ve ekleme işlemlerine baktık.

Github reposu: https://github.com/sonergonul/MinimalAPI

Bunun için Nuget içerisindeki Microsoft.EntityFrameworkCore.InMemory paketini kurduk öncelikle. Bu size in-memory olarak bir veritabanı sağlıyor. Daha sonra entity framework içerinde nasıl DbContext‘ten bir sınıf türetip içerisinde DbSet‘ler kullanarak tablolar oluşturuyorsak burada da aynı yapıyı kullanıyoruz. Sonrası aşağıdaki gibi;

Listeleme:

app.MapGet("/customers", async (CustomerDb db) => await db.Customers.ToListAsync());

Ekleme:

app.MapPost("/customers", async (CustomerDb db, Customer cus) => 
{
    await db.Customers.AddAsync(cus);
    await db.SaveChangesAsync();
    return Results.Created($"/customers/{cus.Id}", cus);
});

ID bazlı listeleme:

app.MapGet("/customers/{id}", async (CustomerDb db, int id) => await db.Customers.FindAsync(id));

Kaynaklar:

https://docs.microsoft.com/en-us/aspnet/core/tutorials/min-web-api?view=aspnetcore-6.0&tabs=visual-studio

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/minimal-apis?view=aspnetcore-6.0

Minimal API | Kuruluş ve Swagger Kurulumu

Minimal API‘ler, .NET 6 ile birlikte gelen, minimum bağımlılıkla HTTP API’leri oluşturmak için tasarlandı. ASP.NET Core‘da yalnızca minimum dosyaları, özellikleri ve bağımlılıkları dahil etmek isteyen mikro hizmetler ve uygulamalar için idealdirler.

Minimal API için en basitinden 4 satır koda ihtiyacımız var.

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();

İşte bu kadar. Elinizde çalışan bir http restful bir api’ınız oldu. Bu geliştirdiğiniz api artık postman üzerinden denemeye hazır.

Swagger nedir peki?

Swagger, JSON kullanılarak ifade edilen RESTful API‘leri açıklamak için bir arayüz tanımlama dilidir. Swagger, RESTful web hizmetlerini tasarlamak, oluşturmak, dökumante etmek ve kullanmak için bir dizi açık kaynaklı yazılım aracıyla birlikte kullanılır. Swagger, otomatik dokümantasyon, kod oluşturma (birçok programlama dilinde) ve test senaryosu oluşturma içerir.

Swagger için kullanılan methodların açıklaması şu şekilde;

app.UseSwagger — ara katman yazılımının oluşturulan OpenAPI açıklamasını JSON içeriği olarak sunmasını sağlar.

app.UseSwaggerUI — Middleware’in Swagger UI öğelerine hizmet etmesini sağlar.

SwaggerEndpoint — OpenAPI açıklamasının endpoint’ini belirtir.

Peki klasik controller ile geliştirilen api’lerden ne farkı var Minimal api’nin?

☑️Filtre desteği yok. AuthorizationFilter, ActionFilter, ExceptionFilter, ResultFilter gibi mesela.

☑️ModelValidator desteği yok.

☑️ModelBinder desteği yok. Custom olarak eklenebilir tabi bu.

✅Github reposu: https://github.com/sonergonul/MinimalAPI

Kaynaklar:

https://docs.microsoft.com/en-us/aspnet/core/tutorials/min-web-api?view=aspnetcore-6.0&tabs=visual-studio

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/minimal-apis?view=aspnetcore-6.0

https://medium.com/geekculture/minimal-apis-in-net-6-a-complete-guide-beginners-advanced-fd64f4da07f5

https://dotnetcoretutorials.com/2021/07/16/building-minimal-apis-in-net-6/

https://dev.to/moe23/getting-started-with-minimal-apis-in-net-6-4mi4