2013-10-11 51 views
0

我有一个资源的客户:下面的资源哪个URL模式更具REST风格?

{ 
"active": true, 
"addresses": [...], 
"company_name": "My Products", 
"customer_account": "MMM474", 
"customer_id": 6163, 
"emails": [...], 
"phones": [...], 
"website": "" } 

和相关资源的地址。

用于访问地址哪个URL是更RESTful的:([id]是特定客户的ID,customer_id

http://domain.tlc/api/v1/customeraddresses/[id]/ 

http://domain.tlc/api/v1/customers/[id]/addresses/ 

+3

没有“更REST风格”的挑战。应用程序是你的,做任何适合你需要的东西。 – moonwave99

回答

0

为了访问地址一个特定的客户,我会选择2.

3

明确选项2.它可以让你进一步扩展API,并保持一致:

HTTP://domain.tlc/api/v1/customers/ [ID] /联系人/

0

如果在这两种情况下,[id]都是特定客户的ID,并且这两个网址都会返回该客户的地址列表,我会说选择#2。

  • http://domain.tlc/api/v1/customeraddresses/[id]/看起来像一个特定customeraddress资源
  • http://domain.tlc/api/v1/customers/[id]/addresses/看起来像一个特定客户的所有地址的列表。

也就是说,他们都是同样“RESTful”,因为他们都识别资源。

+0

事实上,两者都可以用于任何给定的应用程序来识别相同的资源。 –

0

您可以将URL看作是空间分区到子空间中。 假设您有“客户”作为您的根空间,并且其中包含以[id]标识的客户。然后,在每个客户= [id]下,都有“地址”。

所以,它会导致你的第二个选项:

http://domain.tlc/api/v1/customers/[id]/addresses/