OData Custom Route Yapılanması

Merhaba,

Bir önceki OData Davranış Modellemesi ve Attributeları başlıklı makalemizde OData protokolünün nasıl bir davranış sergilediğini, action yapılanmasının nasıl tasarım gerektirdiğini ve istek doğrultusunda özelleştirmenin nasıl yapılandırıldığını incelemiş bulunmaktayız. Bu içeriğimizde ise OData protokolü için custom route yapılanmasının nasıl inşa edileceğini inceleyeceğiz.

İlk olarak OData’nın varsayılan route yapılanmasının nasıl olduğunu ele alarak başlayalım.

Default Route
OData protokolünün varsayılan route yapılanması aşağıdaki gibidir;
https://localhost:5001/odata/personel(1)?$expand=satislar($count=true)

Bizler OData protokolünün sunmuş olduğu imkanlar dahilindeki kurallar çerçevesinde custom routelar oluşturabiliriz. (OData protokolünün Routing Conventions’larına göz atmak için tıklayınız.)

Örneğin;
https://localhost:5001/odata/personel(1)/satislar(10258)
yukarıdaki gibi url üzerinden hedef personelin hedef satışını bizlere verecek bir route oluşturabilmek için aşağıdaki gibi bir action geliştirilmesi gerekmektedir.

    public class PersonelController : ODataController
    {
        NorthwindContext _northwindContext;
        public PersonelController(NorthwindContext northwindContext)
        {
            _northwindContext = northwindContext;
        }
        .
        .
        .
        [ODataRoute("personel({personelid})/satislar({satisid})")]
        public IActionResult GetSatisById([FromODataUri]int personelid, [FromODataUri]int satisid)
        {
            return Ok(_northwindContext.Satislar.Where(p => p.PersonelId == personelid && p.SatisId == satisid));
        }
    }

Yukarıdaki kod bloğunu incelerseniz eğer ‘GetSatisById’ isimli metodun adının ‘Get…’ ile başladığına dikkatinizi çekerim. Ayrıca bu şekilde bir yapılanmanın inşa edilebilmesi için kesinlikle iki nesne/entity arasında fiziksel(foreign) ilişki olması gerektiğini bildiririm.

Bu şekilde url rotalarını özelleştirebilir ve ihtiyacınız doğrultusunda daha sorgulanabilir ve pratik url şablonları oluşturabilirsiniz.

İlgilenenlerin faydalanması dileğiyle…
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…

Bunlar da hoşunuza gidebilir...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*