2016-11-10 39 views
0

我正在設計一個REST API,您可以在其中搜索不同國家/地區的數據,但由於您可以同時在不同的國家(最多4個)搜索相同的內容,我不確定最好/正確的方式來做到這一點。多個國家/地區的REST API結構

這將努力開始獲得數據(我使用的汽車爲例):

/api/uk,us,nl/car/123 

該請求可以爲不同的國家(英國= 1返回不同的ID,我們= 2, nl = 3),那麼當這三個國家要求數據時,我該怎麼辦? 一個不錯的結構,我能得到當時的數據之一:

/api/uk/car/1 
/api/us/car/2 
/api/nl/car/3 

但因爲它擊中了後端的3倍,是不是很有效。

我可以這樣做:

/api/car/?uk=1&us=2&nl=3 

但是,如果我想要添加到該路徑不很好地工作:

/api/uk/car/1/owner 

,因爲這會再變成:

/api/car/owner/?uk=1&us=2&nl=3 

這看起來不太好。

任何人都有如何以良好的方式構建這個建議嗎?

回答

1

我回答了一個類似的question before,所以我會堅持這個想法: 你有一組元素 - 汽車 - 你想以某種方式過濾它。我的建議是添加任何過濾器作爲一個領域。如果該字段不存在,那麼選擇一個國家基於客戶端的語言環境:

mydomain.com/api/v1/car?countries=uk,us,nl 

,當你尋找一個特定的汽車或它的主人

mydomain.com/api/v1/car/1/owner 

,因爲該國本場應該dissapear不需要的(除非車輛ID 1被重用每個國家)

更新:

我真的沒想到車上的ID可以由幾個汽車共享,一個ID應該是唯一的(就像數據庫中的主鍵)。然後,它是有道理的,以保持該國的參數與業主的搜索:

mydomain.com/api/v1/car/1/owner?countries=uk,us 

這應返回的誰擁有id爲1一車人的名單......但對我來說這沒有什麼意義的功能,在這個搜索中,我只會允許一個國家:

mydomain.com/api/v1/car/1/owner?country=uk 
+0

問題是,汽車id是重複使用的國家。舉一個更好的例子,你可以說ID是汽車的註冊,「ABC123」可以存在於所有國家。 – AxAn

+0

@AxAn可以說是一個設計錯誤,那麼 - 如何處理來自不同國家的汽車具有相同ID的結果? –

+0

@AnAn你能澄清一下'/ api/car/owner /?uk = 1&us = 2&nl = 3'會做什麼,忽略了美學的片刻嗎?它是一個*搜索*,或*查找*你知道存在的一個或多個數據記錄? –

相關問題