Sıralı bir listeyi temsil etmek ilişkisel veritabanlarıyla ilgili zor problemlerden biridir. Liste üyeliği ilişkisine bir position özelliği eklemek, bunu yapmanın en yaygın yoludur, çünkü ORDER BY position
SQL sorgunuza ekleyerek sıralı listeyi kolayca alabileceğinizden ve ortalamanın başına konumun tamsayı yerine bir kayan nokta olduğunu varsayarsak, önceki ve sonraki liste üyesinin değerleri.
Bağlantıları yanlışlıkla tutarsız hale getirmek ve bunun yerine döngüsel bir grafik veya ağaç kullanmak kolay olduğundan, iki kez bağlantılı listeler kullanmaktan kaçınılmalıdır.
Ancak, RESTful API'leri ilişkisel veritabanlarının kısıtlamalarından muzdarip değildir. Bir konum özelliği gibi bir kesmek kullanmak yerine, doğal hissettiren bir şey yapabilirsiniz.
Listede yalnızca birkaç yüz öğeniz varsa, tüm listeyi bir istekte aktarın. [1, 2, 3, 4]
Liste üyelerinin kimliğini yeniden sıralamak istediğimizi varsayarsak ,
POST /url/of/the/list
Content-type: application/json
...
[1, 2, 4, 3]
Arka uç daha sonra bunu kullandığınız veritabanı teknolojisine çevirebilir, ancak API kullanıcısının bu ayrıntıları dikkate alması gerekmez.
Liste büyükse ve öğeler genellikle ayrı ayrı istenirse, url'de bir dizine izin verebilirsiniz:
GET /page/7
HATEOAS'a giriyorsanız, kaynak genellikle bu şekilde tüketilirse yanıt, gezinmeyi kolaylaştırmak için önceki / sonraki bağlantıları içerebilir. Ancak, bu, veritabanınızın bu çift bağlantılı listeyi de içerdiği anlamına gelmez.
Liste çok büyükse veya / ArrayList
gibi işlemleri açığa çıkarmak isteyebilirsiniz . Böyle bir çağrıyı hayal edebiliyoruminsert
push
append
POST /url/of/the/list?at=1357;mode=insert
...
description of the item to insert
Yeniden sıralama yaygın bir kullanım durumuysa ve yeniden sıralama hemen gerçekleştirilecekse, API'nizde uygun bir bitiş noktası sunabilirsiniz:
POST /url/of/the/list/reorder-item?from=783;to=1357
Yeniden sıralanan listenin açıkça işlenmesi gerekiyorsa, yeni siparişi JSON belgesi olarak aktarmak daha kolay olacaktır, yukarıya bakın.
Artık API'nizi kullandığınız veritabanı teknolojisinden tamamen ayrı olarak görüntüleyebileceğiniz doğru değil. Ancak, harici API'yi uygulama ayrıntılarından mümkün olduğunca ücretsiz tutmak en iyisidir. Herhangi bir yeniden sıralama yalnızca bir tamsayı sipariş sütununu güncellemek için yaklaşık 30 satıra dokunursa, bu önemli değildir. Sadece mümkün olan en basit şeyi yapın ve her zaman tüm listeyi güncelleyin. Ölçeğiniz, veritabanı kullanımınızın daha karmaşık olmasını gerektiriyorsa, tutarlılığı korumanın daha kolay olduğu arka uçta bu karmaşıklığı yakalamayı tercih edin.