用于查询数据的RESTful服务操作

时间:2009-05-12 12:13:40

标签: rest resources service

在定义面向资源的RESTful服务时,您认为定义查询数据的显式操作(动词)是个好主意吗?

使用HTTP将资源导向的RESTful服务上的CRUD操作映射到PUT,GET,POST和&等操作似乎很明显也很容易。删除但是如何映射查询多个资源的操作 - 使用名为'QUERY'的新操作或仍然使用返回资源集合的'GET'。

我对人们的意见和经历感兴趣......

3 个答案:

答案 0 :(得分:7)

REST是关于资源的。您的查询将返回什么资源?一组数据?这套是如何确定的?它是如何参数化的?这应该确定您将使用GET操作的URL:

GET /customers  would retrieve all customers
GET /customers?q=<query> would retrieve all customers matching the query

编辑:以下对我不太清楚

考虑到查询是关于检索作为一组客户的资源(例如),我开始怀疑所有客户集的明确定义的子集。考虑以下事项:

GET /customers/state/MA              Retrieve all customers in Massachusetts
GET /customers/country/UK            All in the UK
GET /customers/country/UK/postalcode/001-234    All in that postal code in the UK

这些资源对我来说是明确的资源,而不是查询。我将继续使用查询字符串来检索任意一组客户,但是如果客户有自然分区,我可能会在URL空间中指出。

回想一下,GET操作适用于幂等操作,旨在促进缓存。对这些查询的响应应该允许一些合理数量的缓存(可能是一天)。这将允许客户端计算机或代理服务器将结果集缓存一段时间,从而节省服务器往返。

答案 1 :(得分:0)

我仍然会使用GET并在网址中提供查询的参数。

答案 2 :(得分:0)

返回相关资源URI列表作为响应。