2016-04-25 1 views
0

今、私はexpressjsを使ってWeb APIを開発し始めています。 2つのリソースをリンクするにはどちらが良い方法なのか考えています(2つのリソースはすでにデータベースに存在しています)。残りの2つのリソースをリンクする良い方法はどれですか

たとえば、私は2つのエンティティ:companyuserを持っています。 company & userの関係は1対多です。

したがって、ユーザーエンティティにcompany_idが含まれている必要があります。 ユーザーを会社にリンクする方法はいくつかあります。

ケース1:

PUT /users/{user_id} 

Request: 
{ 
    "company_id": "abc" 
} 

は、ケース2:

私はケース1と好む
PUT /company/{company_id}/users/{user_id} 

関係は、このようなdeparment & userとして成長するときので、将来的に、私は私を展開する必要はありません。これらのケースをサポートするURL。しかし、私はそれが安らかなapisを設計するかどうかのベストプラクティスに従っているかどうかは分かりません。

答えて

2

いずれかを使用できます。私はそれが与える柔軟性のために前者を好む。ケース2の場合、どの会社に属しているかにかかわらず、最後の名前が「Smith」のすべてのユーザーを検索する場合は、不運です。

0

私は後者のオプションをいかなる状況においても推奨します。 あなたがHTTPのRFCなど、いくつかの良い記事をチェックすることができます

一般的な考え方は、リソースを一意にそのURLで識別されていることを(インクルードは例外ですバージョニングと同様ですが、今はそれに焦点を当てません)、URL /company/{company_id}/users/{user_id}を使用してリソースにPUTを適用する場合は、この特定のリソースに対して操作を実行する必要があります。あるリソースに対処して別のリソースを変更しているときは、直観的で透過的ではありません。

関連する問題