正确的REST命名

时间:2013-09-12 12:32:54

标签: rest

假设我有一个拥有帐户的应用程序,我可以将它们表示为其余资源,如:

/accounts   //single account
/accounts/{id}    //a specific account

1)如果某个帐户有帐户状态,这是引用它的正确方法吗?

/accounts/{id}/status

2)我如何在REST中表示搜索,说我想搜索和以“ABC”开头的帐户?

2 个答案:

答案 0 :(得分:2)

  

如果某个帐户有帐户状态,这是正确的方法吗?   引用它?

也许,如果帐户状态本身就是一个完全成熟的数据对象。如果它是一个简单的标量值,您可以考虑使用参数来约束从/accounts/{id}返回的值,例如GET /accounts/{id}?field=status

  

如何在REST中表示搜索,说我想搜索并以“ABC”开头的帐户?

使用网址参数:

GET /accounts/?search=ABC*

答案 1 :(得分:0)

您正在将URL中的名词和动词混合在一起,这通常不是RESTFul方法。 In this article他们谈论在你的网址中代表名词和动词的差异。搜索虽然是一个不同的野兽,并尝试了几种不同的方式,我更喜欢遵循搜索自己的网址的方法。这样做的一个原因是在GET请求上获得缓存,您可以使URL以搜索为中心。查询参数不会被缓存,因此这是另一个反对使用它们作为我们的GET请求结束时的参数的参数。 This article更多地讨论了我喜欢使用的方法。