我想实现一个REST服务,它能够解析查询,例如检索在startdate之后和endate之前创建的用户以及admin的特权。似乎标准REST实现只能通过ID进行查询。我是否需要自定义协议才能使这种查询成为可能或任何标准?
谢谢!
答案 0 :(得分:3)
REST中没有约束表明您只能通过ID进行查询。使用一组查询参数返回一组符合这些搜索条件的用户绝对没有错。
答案 1 :(得分:1)
看看Google's GDATA Protocol。它非常 RESTful ,它们有一种非常好的方式来执行“复杂”查询,同时仍然保持一个干净的URI。
http://code.google.com/apis/gdata/docs/2.0/reference.html#Queries
以下是其干净查询URI
的示例http://example.com/jo/-/Fritz/2006
而不是
http://example.com/jo?category=Fritz&category=2006
来自Google:
此方法在不使用查询参数的情况下标识资源,并生成更清晰的URI。我们选择这种方法用于类别,因为我们认为类别查询将是最常见的查询。
答案 2 :(得分:0)
就我而言 - 宁静的东西对CRUD行为有效。您可以实现单独的search
方法/网址,并根据需要将其传递给多个参数。如果您仍然尝试遵循REST方法 - 您应该使用GET请求类型。
答案 3 :(得分:0)
Ryan Bates有一个Railscast,他将搜索创建为资源。即使你没有做Rails,这个概念仍然有效。
答案 4 :(得分:0)
我将django的字段查找语义作为复杂查找的指南。 https://docs.djangoproject.com/en/dev/ref/models/querysets/#id4
不要被它定义为特定于语言的api这一事实所牵制,它很容易转换为html查询参数。
一个例子是http://example.com/Goods?category=fruit&size__lt=14
要在sql中获取select * from goods where category = 'fruit' and size < 14
或在xpath中获取/goods[@category='fruit' and @size < 14]
的结果,或者其他任何内容。