2012-05-29 33 views
2

everyone =) 我是休息服务的新手,所以我不确定某些功能是否可行。 例如,我有一个项目列表和许多方法来过滤那些在删除到客户端应用程序之前。 我使用.netlinq & wcf其余服务与json返回格式。 方式过滤列表:有很多条件的休息服务

.../Items/RecentOnes 
.../Items/FilteredByDate 
.../Items/ItemsWithCrashID('CrashId') 
.../Items/ItemsWithValue('Value') 

等 我需要这些过滤器在一个查询中被调用。像

.../Items/ItemsWithValue('Value')/RecentOnes/FilteredByDate 

.../Items/FilteredByDate/ItemsWithCrashID('CrashID')/Recent 

和其他14种可能组合。 (正如你看到的,过滤器的顺序应该没有关系)

我的问题是 - 是否有可能以某种方式编写这4个服务,使所有这些组合工作?

还是这样做的唯一方法是写一个单一的服务有4个参数,可以像

.../Items?recentOnes=true&FIlteredByDate=false&CrashID=&Value=somevalue ? 

在此先感谢=)

+0

使用REST的优点之一是能够根据服务方法参数来格式化URL。所以,最新的格式看起来“RESTful”。如果你想使用多个过滤器,你可以使用一个条件对象,并将字符串表示形式传递给服务:'../ Items?condString = {condString}'。条件对象可以具有像过滤器名称,值,比较运算符,否定和子条件列表等属性。父条件通过逻辑运算符('AND','OR')与子条件链接。 –

回答

2

有趣的问题!作为RESTful Web服务使用URL作为资源表示,e.g:

.../items   =>    get all items 
.../items/1  =>    get an item which id == 1 
.../items/1/edit =>    edit an item which id == 1 
.../items?value='computer' =>  get all items which value == 'computer' 

,所以你可以看到你的网址:

.../Items/ItemsWithValue('Value')... 

它不表示任何特定资源的。看起来你正在寻找一些项目,这是按价值过滤。这就像搜索。所以你的第二个选择是更好的,使用任何你想过滤的查询字符串。

+0

感谢您的回复=) – Vital

+0

不客气...... :) –