REST架构 - 复杂方法的Url如何?

时间:2010-11-25 00:07:02

标签: web-services rest

我有以下Url,它返回资源列表:

http://example.com/resources/

我还实现了一个返回特定资源的方法(在本例中为资源142)。

http://example.com/resources/142

我想添加一个超出典型HTTP方法的方法:List,Create,Retrieve,Replace,Update。要遵循的模式是什么?在我的具体情况下,我需要检查资源的可用性。 Url将如何显示(http://example.com/resources/checkavailability/142)?

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

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

不需要资源来检查其他资源的可用性,也不需要GET请求,HEAD请求就足够了,这与{ {1}}请求但不转移正文。然后,您可以查看返回代码,并通过这些确定资源是否可用。这是假设您已正确实现返回代码。

答案 1 :(得分:1)

Restful over HTTP为您提供统一的界面,您通常不需要对URL中的操作进行编码

关于使用GET返回有效负载的提及/检查可用性,效率低下是一个有效的原因,因此请使用HEAD(它只返回响应头)。

request:
HEAD /resources/123

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

其他建议统一界面替换:

  • / resources / list:GET / resources
  • / resources / replace / 123:PUT / resources / 123
  • / resources / update / 123:PUT / resources / 123
  • / resources / create:POST / resources