在定义面向资源的RESTful服务时,您认为定义用于查询数据的显式操作(动词)是个好主意吗?
这似乎是显而易见的,易于CRUD操作使用HTTP来如PUT操作导向RESTful服务的资源映射,GET,POST和DELETE,但应该如何在查询多个资源映射操作 - 采用了全新的操作称为"QUERY"或静止使用'GET'返回一组资源.
我对人们的意见和经历很感兴趣......
REST是关于资源的.您的查询将返回什么资源?一组数据?这套是如何确定的?它是如何参数化的?这应该确定您将使用GET操作的URL:
GET /customers would retrieve all customers GET /customers?q=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操作是为幂等操作而设计的,旨在促进缓存.对这些查询的响应应该允许一些合理数量的缓存(可能是一天).这将允许客户端计算机或代理服务器将结果集缓存一段时间,从而节省服务器往返.