2016-11-10 6 views
0

異なる国のデータを検索できるREST APIを設計していますが、同時に同じことを、異なる国(最大4)で検索できるため、am私はそれを行うための最善の/正しい方法を確信しています。要求が異なる国のために異なるIDを返すことができ複数の国のREST API構造

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

(英国= 1、私たち= 2、:

これは、データを取得するために開始するために働くだろう(私は例として車を使用しています) nl = 3)、これらの3カ国に対してデータが要求されたらどうしますか?私は一度にデータ1を得ることができる素敵な構造のために :

/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に答え、私はその考えに固執します: あなたが-cars-要素のセットを持っていて、何らかの方法でそれをフィルタリングします。私のアドバイスは、任意のフィルタをフィールドとして追加することです。あなたが特定の車やその所有者

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

国のためを探したときに

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

は、このフィールドは消えるはずです:フィールドが存在しない場合、クライアントのロケールに基づいて一つの国を選択してください(車のID 1は、それぞれの国のために再利用されていない限り)必要とされていない

更新:

私は本当に車のidは、いくつかの車で共有することができ期待していませんでした、 IDは一意である必要があります(データベースの主キーなど)。

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

これは、IDが1の車を所有者のリストを返す必要があります...しかし、私にとって、これは機能として意味をなさない:次に、それは所有者の検索と国のパラメータを維持するために理にかなっていますこの検索で​​は、私は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'が何をするのかを明確にすることができますか?あなたが知っている1つまたは複数のデータレコードの*検索*、または*ルックアップ*ですか? –

関連する問題