Sunucu tarafında web geliştirme konusunda yeniyim ve son zamanlarda RESTful API'leri uygulama konusunda çok şey okudum. REST API'sinin hala üzerinde durduğum bir yönü, istemcinin etkileşimde bulunabileceği kaynakları tanımlayan URI hiyerarşisini yapılandırmaktır. Özellikle hiyerarşinin ne kadar ayrıntılı yapılması gerektiğine ve diğer kaynak türlerinden oluşan kaynaklarda ne yapılacağına karar vermek üzereyim.REST kaynak hiyerarşisini nasıl yapılandırabilirim?
İşte ne demek istediğimi umarım gösterecek bir örnek. Kullanıcıların diğer kullanıcılardan ürün satın almasını sağlayan bir web servisimiz olduğunu düşünün. Bu durumda, iki üst düzey kaynak kullanıcıları ve ürünleri ürünleri vardır. Her hiyerarşi referans bir alt nesneleri Bu durumların her ikisinde de
/products
/{id}
/name
/category
/description
/keywords
/buyer
/seller
: ürünler için
/users
/{id}
/location
/about
/name
/seller_rating
/bought
/sold
: İşte URI hiyerarşisi, kullanıcılar için
yapılandırmaya böyle başladı Diğer hiyerarşideki nesnelerin Örneğin, /users/{id}/bought
, bir kullanıcının aldığı, /products
alt kümesi olan ürünlerin bir listesidir. Ayrıca, /products/{id}/seller
, belirli bir ürünü satan kullanıcıyı referans alır.
Bu URI'nin diğer nesnelere veya diğer nesnelerin alt kümelerine başvurması, API'nin şu gibi şeyleri desteklemesi gerekir: /users/{id}/bought/id/description
ve /products/{id}/buyer/location
? Çünkü bu tür URI'ler destekleniyorsa, bu /users/{id}/bought/{id}/buyer/bought/{id}/seller/name
gibi bir şeyi ya da eşit şekilde sarsılmış bir şeyi nasıl durduracaksınız? Ayrıca, bu durumda, sunucudaki yönlendiricinin URI'leri rasgele uzunluktan yorumlaması gerektiğinden yönlendirmeyi nasıl ele alırsınız?
Ee, ne diyorsunuz sistemde her kaynak tam ** birine sahip olmasıdır:
Ve Ürünleri için
, sizin sitation ben kullanırım? Çünkü bu her şeyi çok daha basitleştiriyor. Yukarıdaki örnekte, bir ürünün satıcısını api aracılığıyla göstermek istediğimde (ürünler yalnızca bir satıcınız var) ne önerirsiniz? İnsanları sadece yapmalı mıyım? GET/products/{id} * hangi JSON nesnesini satıcıyla birlikte iade edecek? – martegaJSON for/products/{id} ', size kolaylık sağlamak için iç içe kullanıcı nesnesi veya bu kullanıcıya url içerebilir, bu sizin seçiminizdir ve her ikisinin de ayrı olarak var olduğu gerçeğini değiştirmez. – Anri
btw, diğer hizmetlerin API'lerine bakmaya yardımcı olur. Örneğin: https://developer.foursquare.com/docs/venues/venues – Anri