2010-11-25 38 views
0

我有以下地址返回我的资源列表:REST架构 - 复杂方法的Url如何显示?

http://example.com/resources/

我还执行了返回特定资源的方法(在这种情况下,资源142)。

http://example.com/resources/142

我想补充的方法,它是典型的HTTP方法之外:列表,创建,检索,替换,更新。遵循的模式是什么?在我的具体情况下,我需要检查资源的可用性。 Url的外观如何(http://example.com/resources/checkavailability/142)?

我虽然只是简单地使用GET方法,并检索该信息作为返回的对象的一部分。然而,我的一些同事认为这样做效率不高(要传输的数据将远远大于仅仅返回真/假)。

感谢您的帮助!

+0

I如果您在典型的HTTP方法之外添加方法,无论如何您应该添加一个方法来检查可用性,像EXISTS一样。这样你可以使用相同的URL,并返回该方法的真/假。 – 2010-11-25 00:13:08

回答

3

没有必要的资源,以检查其他资源的可用性,而且也没有必要为GET请求,HEAD请求应该够了,这是同一个GET请求,但不转移尸体。然后您可以查看返回码,并通过这些确定资源是否可用。这假设你已经正确实施了返回码。

1

雷斯特夫尔通过HTTP为您提供了统一的接口,你往往不需要进行编码的操作您的网址

内关于使用GET返回有效载荷效率低下您提到/ checkavailability是一个正当的理由,所以用头(只它让你回应响应标题)。

 
request: 
HEAD /resources/123 

response status: 
404 Not Found: equals to /checkavailability == false 
200 OK: equals to /checkavailability == true 

其他建议统一的界面替换:

  • /资源/列表:GET /资源
  • /资源/替换/ 123:PUT /资源/ 123
  • /资源/更新/ 123:PUT/resources/123
  • /resources/create:POST/resources