2017-08-31 27 views
1

所以說我有三個模型/表:筆記,裝運和用戶。我想要求發貨的頁面,但我需要來自特定用戶的相關注釋(文本,圖像等)的信息。如何處理通常在REST中彼此請求的兩個資源?

處理這個問題的最佳方法是什麼?

我應該創建一個像/api/shipment/note這樣的嵌套資源,並向它添加查詢參數來指定用戶ID,頁面大小等。 (是嵌套的資源,如/api/shipment/note有效的休息嗎?我已經看到過類似/api/note/{noteid}/shipment是有效的,但怎麼樣聯手GET承滴盤)

或者我應該要求所有的出貨量/api/shipment(指定用戶在查詢參數),並要求說明信息從/api/note/{noteid}每次發貨?

或者我應該使用/api/user/{userid}/shipment/note

或者因爲我很少會在沒有來自票據的信息的情況下請求發貨資源,我是否應該將註釋信息添加到/api/shipment端點中?

回答

1

如果您的用例將您的貨件和單據一起查詢,那麼將呼叫結合起來會更有效率。這也假設兩組數據來自同一個數據存儲。

要處理不需要note數據的情況,可以引入詳細級別或include查詢字符串參數以標識應包含的額外數據。

API /裝運包括=記|?富?|酒吧

OR

API /運輸/(編號)包括=注

1

一對夫婦更基於here的答案的可能性。

一)使用自定義的媒體類型

GET /api/shipments HTTP/1.1 
Host: example.com 
Accept: application/vnd.company.full+json 

信用:https://stackoverflow.com/a/42147688/8543451

B)使用新的特定內容的端點

/api/shipments/withNotes 

信用:https://stackoverflow.com/a/42146963/8543451

c)中作爲組合資源

這基本上是b),但與一捻:

/api/shipmentsWithNotes 

這是因爲它具體化的概念接合as a noun