Bir REST API oluşturma aşamasındayım ve şu anda aşağıdaki sorunla karşılaşıyorum:
Fooilk kaynaktır. CRUD işlemleri/foo/URI aracılığıyla uygulanabilir .Barikinci kaynaktır. CRUD işlemleri/bar/URI aracılığıyla uygulanabilir .- Her
Foobiri sıfır veya bir ile ilişkilidirBar.BarBir alt kaynak olarak davranmamamınFoonedeni, aynıBarörneğin mutipleFoos arasında paylaşılabilmesidir . Bu yüzden, bunun yerine bağımsız bir URI ile erişmenin daha iyi olduğunu düşündüm/foo/[id]/bar.
Benim sorunum önemli bir durumda, bir Fooörnek isteyen istemciler de ilişkili Barörnek ile ilgileniyor olmasıdır . Şu anda bu, bir yerine iki sorgu gerçekleştirmeleri gerektiği anlamına gelir. Her iki nesneyi tek bir sorgu ile almak için izin veren bir yol tanıtmak istiyorum, ama bunu yapmak için API modellemek için nasıl bilmiyorum. Şimdiye kadar ne buldum:
- Ben buna benzer bir sorgu parametresi tanıtmak olabilir:
/foo/[id]?include_bar=true. Bu yaklaşımla ilgili sorun, yanıtın kaynak gösteriminin (örn. JSON yapısı) farklı görünmesi gerektiğidir (örn{ foo: ..., bar: ... }. Sadece serileştirilmiş yerine bir kapFoo), bu daFookaynak uç noktasını "heterojen" kılar . Bunun iyi bir şey olduğunu düşünmüyorum. Sorgulama yapılırken/foo, sorgu parametrelerinden bağımsız olarak istemciler her zaman aynı kaynak gösterimini (yapısını) almalıdır. - Başka bir fikir, yeni bir salt okunur uç nokta eklemektir
/fooandbar/[foo-id]. Bu durumda, böyle bir temsili iade etmek sorun değil{ foo: ..., bar: ... }, çünkü o zamanfooandbarkaynağın sadece "resmi" temsili . Ancak, böyle bir yardımcı uç noktasının gerçekten RESTful olup olmadığını bilmiyorum (bu yüzden sorunun başlığına "can" yazdım. Elbette teknik olarak mümkün, ama iyi bir fikir olup olmadığını bilmiyorum).
Ne düşünüyorsun? Başka olasılıklar var mı?
Bar, a ile ilişkilendirilmeden var olamaz Foo. Ancak, yukarıda yazdığım gibi, birden çok Fookişinin aynı şeyi paylaşması mümkündür Bar. FooBir Barilişkili olmadan bir oluşturmak mümkün olmalıdır , bu yüzden Barebeveyn olarak ele alınması gerektiğini düşünmüyorum .