有很多条件的休息服务

时间:2012-05-29 06:14:32

标签: rest service multiparameter

每个人=) 我是休息服务的新手,所以我不确定某些功能是否可行。 例如,我有一个项目列表以及在删除客户端应用程序之前过滤这些项目的方法。 我正在使用.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 ? 

提前致谢=)

1 个答案:

答案 0 :(得分:2)

好问题!由于restful web services使用url作为资源表示,例如:

.../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')...

根本没有代表任何特定资源。看起来你正在寻找一些按价值过滤的物品。这就像一个搜索。所以你的第二选择更好,使用你想要过滤的任何东西作为查询字符串。