COMPUTER ENGINEER

Örneklere git
Blog
Next.js / ASP.NET Core / SQL6 dk çalışma
16/ 41

ASP.NET Core hattı

Routing ve endpoint seçimi

Bir URL’nin hangi koda gideceğine nasıl karar verilir ve rota kısıtları neden önemlidir?

AnlaÖrneği inceleKendin uygula

Kavramı anlayalım

Routing, gelen isteğin yolunu ve metodunu tanımlı rota şablonlarıyla karşılaştırır ve bir endpoint seçer. Endpoint; çalıştırılacak kod ile ona eklenmiş özelliklerin (metadata) birleşimidir: [Authorize], [EnableRateLimiting], [AllowAnonymous] gibi. Seçim yapıldıktan sonraki middleware’ler bu bilgileri okuyabilir; yetkilendirme ve hız sınırının routing’den sonra gelmesinin nedeni budur.

Şablonlar parametre içerebilir: “api/posts/{slug}” yolundaki slug değeri yakalanır. Kısıtlar şablonu daraltır: {id:int} yalnız tam sayıyla eşleşir, {slug:minlength(3)} kısa değerleri dışarıda bırakır. Kısıtlar doğrulama yerine geçmez; amaçları doğru endpoint’i seçmektir. Eşleşme yoksa routing 404 üretir.

Birden fazla şablon eşleşebildiğinde ASP.NET Core en belirgin olanı seçer: sabit bir parça, parametreden daha önceliklidir. “api/posts/latest” ile “api/posts/{slug}” birlikte varsa ‘latest’ ilk şablona gider. Belirsiz kalan iki eşit eşleşme ise çalışma zamanında hata verir.

NERESİNDE KULLANIRSIN?

Yanlış endpoint seçimi, yanlış yetki kuralının uygulanması demektir.

SIK YAPILAN HATA

Rota kısıtlarını girdi doğrulaması sanıp ayrıca doğrulama yapmamak.

01 / UYGULAMA

Aynı konu. Üç farklı derinlik.

Temsili örnek
[Route("api/posts")]
public class PostsController : ControllerBase
{
    [HttpGet("{slug}")] public IActionResult Get(string slug) => …   // GET api/posts/ilk-yazi
    [HttpGet] public IActionResult List() => …                         // GET api/posts
}

Attribute routing ile şablon controller ve metot üzerine yazılır.

Bu sayfa gerçek bir sunucuya veya veritabanına bağlanmaz. Kod örnekleri .NET 8, Next.js ve SQL Server için temsilîdir; süreler simülasyondaki örnek değerlerdir, ölçüm değildir. Örnekleri yalnız kendi geliştirme ortamında dene; gerçek bağlantı dizesi, token veya parola paylaşma.

02 / SIRA SENDE

Önce kendin dene.

‘GET api/posts/{slug}’ ve ‘GET api/posts/drafts’ var. drafts uç noktası [Authorize(Roles="Admin")] ile korunuyor. Biri /api/posts/drafts istediğinde hangi endpoint seçilir ve neden önemli?

Çözümü ve açıklamasını göster
Açıklamalı çözüm
Sabit parça daha belirgin olduğu için 'drafts' endpoint’i seçilir ve Admin şartı uygulanır.
Şablon belirsiz olsaydı veya drafts bir slug gibi ele alınsaydı,
koruma devreye girmeyebilirdi.

Yetki kuralları endpoint’e bağlıdır; hangi endpoint’in seçildiği güvenliğin bir parçasıdır.