Asp.Net Core Api Pagination

Hakan Karabulut
2 min readJun 29, 2020

--

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.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

No responses yet

Write a response