Bir RESTful API aracılığıyla göstermem gereken bir nesne hiyerarşim var ve URL'lerimin nasıl yapılandırılması ve ne döndürmeleri gerektiğinden emin değilim. Herhangi bir en iyi uygulama bulamadım.
Hayvanlardan miras kalan Köpeklerim ve Kedilerim olduğunu varsayalım. Köpekler ve kediler üzerinde CRUD operasyonlarına ihtiyacım var; Genel olarak hayvanlar üzerinde de operasyonlar yapabilmek istiyorum.
İlk fikrim şöyle bir şey yapmaktı:
GET /animals # get all animals
POST /animals # create a dog or cat
GET /animals/123 # get animal 123
Mesele şu ki, / animals koleksiyonu, tam olarak aynı yapıya sahip olmayan nesneleri (köpekler ve kediler) geri alıp alabileceği için artık "tutarsız". Farklı özniteliklere sahip nesneleri döndüren bir koleksiyona sahip olmak "RESTful" olarak kabul edilir mi?
Diğer bir çözüm, her somut tür için aşağıdaki gibi bir URL oluşturmak olabilir:
GET /dogs # get all dogs
POST /dogs # create a dog
GET /dogs/123 # get dog 123
GET /cats # get all cats
POST /cats # create a cat
GET /cats/123 # get cat 123
Ama şimdi köpeklerle kediler arasındaki ilişki kayboldu. Tüm hayvanları almak isterse, hem köpek hem de kedi kaynakları sorgulanmalıdır. URL'lerin sayısı da her yeni hayvan alt türü ile artacaktır.
Bir başka öneri de, ikinci çözümü bunu ekleyerek artırmaktı:
GET /animals # get common attributes of all animals
Bu durumda, geri getirilen hayvanlar, yalnızca tüm hayvanlar için ortak olan, köpeğe özgü ve kediye özgü nitelikleri bırakan özellikleri içerecektir. Bu, daha az ayrıntı olmasına rağmen tüm hayvanların alınmasına izin verir. Döndürülen her nesne ayrıntılı, somut sürüme bir bağlantı içerebilir.
Herhangi bir yorum veya öneriniz var mı?