REST和过滤记录

时间:2011-11-01 15:08:29

标签: web-services rest

我目前有一个看起来像这样的.NET方法 - GetUsers(Filter filter),这是通过发送SOAP请求从客户端调用的。正如您可能猜到的,它需要一堆过滤器并返回与这些过滤器匹配的用户列表。过滤器不是太复杂,它们基本上只是一组从日期,到日期,年龄,性别等,我在任何时候都拥有的过滤器集是静态的。

我想知道RESTful的做法是什么。我猜我会有一个Users资源。它会是GET /Users?fromDate=11-1-2011&toDate=11-2-2011&age=&sex=M吗?有没有办法将Filter传递给它而不必将其转换为单独的属性?

我正在从移动客户端使用此服务,因此我认为实际创建过滤器的额外请求的开销:POST filters是糟糕的用户体验。即使我们这样做,POST filters甚至意味着什么?这是否应该在数据库中创建过滤器记录?如果我的请求序列如下,服务器如何跟踪刚刚创建的过滤器?

POST /filters -- returns a filter
{
    "from-date" : "11-1-2011",
    "to-date" : "11-2-2011",
    "age" : "",
    "sex" : "M"
}


GET /Users?filter=filter_id

如果请求有点混乱,请道歉。我是。

谢谢,
Teja公司

2 个答案:

答案 0 :(得分:2)

我们就像你拥有它一样 GET / Users?fromDate = 11-1-2011& toDate = 11-2-2011& age =& sex = M

我们有9个查询字符串值。

我认为没有任何问题

答案 1 :(得分:1)

我处理它的方式是我使用包含参数的主体进行POST,然后返回重定向到GET。 GET URL的外观完全取决于服务器。如果您想将过滤器转换为单独的查询参数,或者如果您想要保留过滤器,然后添加一个指向已保存过滤器的查询参数也可以。优点是你可以随时改变主意,客户也不在乎。

另外,因为你正在进行GET,你可以利用缓存,这应该超过额外的retquest。