2012-05-28 42 views
0

假设我有一个URL作为以下,例如雷斯特夫尔地址图案

  1. http://www.company.com/categories#列出所有类别
  2. http://www.company.com/categories/car#列出所有汽车
  3. http://www.company.com/products/303#唯一ID = 303

我的问题是汽车,为2 http://www.company.com/categories/car,是没有更好的我使用它的复数形式?

例如

http://www.company.com/categories/cars 
+0

定义 “更好” - 对于谁/什么目的更好? – Widor

+0

@Widor,我的意思是更标准,因此宁静 – Howard

+0

这是一个代码相关的问题呢?如果我正确理解你的问题,它似乎不是。 – poepje

回答

2

为了2.更REST风格的图案,你会发出GET请求来检索汽车的名单。

在这种情况下,这将是有意义的使用复数:

http://www.company.com/categories/cars 

这让开放的可能性,它与具体发放(单数)汽车记录:

http://www.company.com/categories/cars/ferrari 
+0

你提出了一个很好的观点!那么,为什么不是http://www.company.com/categories/cars/ferraris?如果我还有更多的类别,比如奢侈品,Coupe等。似乎我认为如果一个类别没有更多的子类别,单数也是有意义的,但是由于我们无法预测未来,因此总是复数更加灵活。 – Howard

+0

好吧,如果你想让_Ferraris_作为汽车的一个类别,并且有许多模型返回,那么你可以将它多元化,这仍然是有道理的。但对于任何只能返回单个记录的东西(_Person_将是这方面的一个更好的例子),然后坚持单数。 – Widor

4

这是正确的,如果你使用复数为你的资源。

http://www.company.com/categories/cars 

,因为汽车是类别的子资源......所以会更好,我建议你应该暴露你的汽车资源为specifice类别的子资源:但是,如果你喜欢使用的URL它不叫宁静:

http://www.company.com/categories/123/cars #get all cars under category which id = 123 
+0

这不是查询字符串的设计目的吗?即'GET http://www.company.com/cars?category_id=123#获取所有类别为id = 123'的汽车。 – FtDRbwLXw6

+0

是的,你也可以使用它。但是,上面的问题没有谈到查询字符串。 –

0

它完全依赖于你和你的应用程序。如果您有多个REST服务,则还可以使用carList而不是汽车或汽车。这是有道理的,而不是混淆。确保在所有REST URI中统一。

0

认为它是一个Windows资源管理器的目录。如果您正在当地文件夹中组织汽车,法拉利会在哪里?

另一个要考虑的是专门设计的URI,你有更多的名词和动词少PUT和POST请求。

0

复数。 url中的“cars”元素应该反映类别的名称。类别的名称根据我的经验通常是复数,因为它们识别一组多个实体。例如: - transporation设备类有:汽车,飞机,自行车和滑板。

东西是一辆汽车,它属于类别“汽车”。

尼斯的例子是在维基百科的命名约定为组类别:

设置类被命名为一类后(通常在复数)。例如,类别:法国的城市包含的主题是法国城市的文章。

https://en.wikipedia.org/wiki/Wikipedia:Set_category#Set_category

0

一个类别englobes了很多项目。所以,是的。 汽车将有更多的意义比

http://www.company.com/categories/cars/mitsubishi/lancer (if you have more categories) 

OR

http://www.company.com/categories/cars/lancer