2017-08-31 41 views
0

比方說,我正在開發一個Rails後端用作API相同的資源。我有一個Book模型,其中has_manyReviews。每個這樣的Reviewshas_manyPhotosbelongs_to一個User。要了解我要去的內容,請查看酒店評論網站,其中有來自酒店用戶的圖片。但是,在畫廊旁邊,您還可以找到用戶的單獨評論,其中包含一些照片。目前我JSON響應看看這個:JSON API設計:包括在多個地方

{ 
book: { 
    id: 1, 
    star_rating: 5 
    original_images: [] 
}, 
reviews: [ 
    { 
    id: 1, 
    title: "great book", 
    photos: [ 
    { 
    url: "http://foobar.gov", 
    caption: "hi" 
    }, 
    { 
    url: "www.hello.world", 
    caption: "hi" 
    } 
    ], 
    user: { 
    name: "Fred" 
    } 
    }, 
    { 
    id: 2, 
    ..etc 
    } 

我的困境:我的應用程序的前端,我希望能夠循環通過審查,並顯示審查數據+審查的照片,所以做這樣的事情review.userreview.titlereview.photos在一個循環將是偉大的,並與我目前的數據結構。另一方面,當我想要展示一個畫廊時,如果我在與original_images相同的結構層次上有一個陣列,它將包含所有的URL,對我來說更容易。但是,如果我這樣做,當我想顯示一個具體的審查的照片,我會基本上做一個巨型大小的數組中進行搜索,並挑選出屬於那個特定的審查圖像。

我的問題:我應該包括在多個地方的照片?無論他們現在在哪裏,還可以在一個大陣中作爲original_images的兄弟姐妹?

回答

0

因此,看來你正在尋找解決方面的兩個問題,審查照片:

  1. 顯示所有的照片,供其他特定資源(酒店,你的情況)。
  2. 只顯示資源的單個評論照片。

我假設,當酒店的頁面加載時,你會想要準備好所有的評論照片。當你想顯示一個單獨的評論的照片時,我假設用戶會點擊評論並進入一個新頁面或某種模式會出現。

你的API正在發送你所有你需要的數據。現在,您只需要在客戶端對數據進行處理以適應您的需求。因此,當頁面加載時,您將遍歷響應並創建兩個數組:reviewsallReviewImages。然後,您將通過從allReviewImages陣列獲取該酒店的所有評論圖像,然後通過reviews陣列顯示所有評論及其相關圖像。 <div data-imagelink="{reviews.photos[id]}"></div>

我不知道你的客戶進行編碼,但你:

要經歷的reviews陣列時,在一個單獨的頁面或模式顯示個別審查的形象,你可以創建必要的邏輯/鏈接從上面的例子中得到想法。

你得到你從你的API響應所需要的數據,您需要做的僅僅在客戶端的一些爭論,你應該能夠做你所需要的!