Asp.Net Core Api Pagination
Bu makalede dotnet core rest api listeleme endpointlerinde sayfalama işlemlerini örnekle açıklamaya çalışacağım.
Öncelikle işe Api dönüş tiplerini soyutlama ile başlıyorum. Bu doğrultuda birden fazla result tipinde base olarak kullanacağım IResult olarak isimlendirdiğim temel interface’i oluşturarak başladım. Geriye kalanı kod anlatsın =)
Sayfalama için kullanacağım result için;
Sayfalama olmadan geri döneceğim data için kullandığım interface;
Gelelim bunları implemente eden concrete sınıflara. Bunların içeriğini de aşağıdaki gibi oluşturdum.
Sayfalama için kullanacağım bir yardımcı model’e ihtiyacım var, bunun için;
Sayfalamada Uri kullanacağım için yardımcı bir servise ihtiyacım var. Bunun için;
HttpContextAccessor üzerinden kullandığım extension methodlarım;
Servis katmanında kullanmak için PaginationDataResult için bir yardımcı method daha eklemesi yaptım;
Servis katmanı için şöyle bir interface kullanıyorum, sayfalama vb işlerimi de doğrudan servis içinde halletmeyi tercih ediyorum.
Yukarıdaki interface’i implemente eden sınıfın içeriğini aşağıdaki gibi doldurdum.
Endpoint düzeyinde kullanmak için öncelikle DI’ları Startup.cs içinde tanımlamalıyım. Bunun için;
Artık endpoint’leri yazmaya başlayabilirim. Bu örnekte hep aynı tür endpoint’ler kullanacağım için generic bir yapı kullanmayı tercih ettim.
Controller için yazmış olduğum extension;
Generic oluşturduğum Controller ise;
Endpoint’lerim artık aşağıdaki gibi bir örneğe dönüştü:
Son durumda dönen result örneği :
Api tarafında sayfalanmış halde dönen data UI kısmında iş yükünü alacaktır.
Projenin tamamına erişmek isterseniz: