SORU
14 Aralık 2012, Cuma


API Sayfa en iyi uygulamalar

Yapıyorum sayfa numaralı bir API ile bazı yardıma garip kenarı bir davada isterim.

Birçok API gibi, bu büyük sonuçlar sayfalara ayırır. Eğer /foos sorgu, 100 sonuç (#1-100 yani foo), ve /foos için bir bağlantı alacaksınız?sayfa foo döndürmesi gereken=2 #101-200.

Foo #10 ne yazık ki, veri API tüketici yapar sonraki sorgu önce set /foos silinir?Sayfa=2 100 ile mahsup ve iade #102-201 foos.

Bu foos çekmeye çalışan API tüketiciler için bir sorun - #101 foo almaz.

Bu işlemek için en iyi yöntem nedir? Mümkün olduğunca hafif yapmak için (API istekleri için önleme taşıma oturumları gibi) istiyoruz. Diğer API örnekler büyük mutluluk duyacağız!

CEVAP
16 Aralık 2012, Pazar


Tamamen verilerinizi bu olabilir veya çalışmayabilir ele nasıl emin değilim, ama bir zaman damgası alanı ile paginating düşündünüz mü?

/Foos sorgulandığında 100 sonuç alırsın. API bu (JSON, XML ama eğer ihtiyacı varsa aynı ilkeler takip edilebilir varsayarak) gibi bir şey dönmesi gerekir

{
    "data" : [
        {  data item 1 with all relevant fields    },
        {  data item 2   },
        ...
        {  data item 100 }
    ],
    "paging":  {
        "previous":  "http://api.example.com/foo?since=TIMESTAMP1" 
        "next":  "http://api.example.com/foo?since=TIMESTAMP2"
    }

}

Sadece bir not, sadece örtülü bir 'sınır' sonuçları. üzerinde bir zaman damgası kullanır kullanarak Açık bir sınır ekleyin ya da until bir özelliği kullanmak isteyebilirsiniz.

Zaman damgası dinamik olarak belirlenen listedeki son veri öğesi kullanılarak yapılabilir. Bu az ya da nasıl Facebook (yukarıdan aşağıya doğru formatta sayfa numaralandırma bağlantılarını görmek için kaydırma yukarıda verdim) daha fazla gibi görünüyor.

Bir sorun olabilir eğer eklemek için bir veri öğesi, ama esas açıklama geliyor gibi olacağını ekledi (değilse, bana bildirin ve ben görecek miyim geliştirmek bu).

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 8bitdigitaltv

    8bitdigitalt

    31 AĞUSTOS 2011
  • Jared Busch

    Jared Busch

    25 Mayıs 2011
  • kamaniusilelis

    kamaniusilel

    10 HAZİRAN 2011