【发布时间】:2010-05-20 17:19:25
【问题描述】:
在 OpenRasta 中是否有可能有一个 Uri 模式,该模式允许提交相同键的值数组并将其映射到接受查询参数数组的处理程序方法。
示例:从集合中返回所有名为 Dave Smith 的联系人。
HTTP GET /contacts?filterBy=first&filterValue=Dave&filterBy=last&filterValue=Smith
配置如下:
什么语法最适合 Uri 字符串模式匹配? (欢迎提出建议)
ResourceSpace.Has.ResourcesOfType<List<ContactResource>>()
.AtUri("/contacts")
.And.AtUri("/contacts?filterBy[]={filterBy}[]&filterValue[]={fv}[]") // Option 1
.And.AtUri("/contacts?filterBy={filterBy}[]&fv={fv}[]") // Option 2
将映射到以下的 Handler 方法:
public object Get(params Filter[] filters)
{
/*
create a Linq Expression based on the filters using dynamic linq
query the repository using the Linq
*/
return Query.All<Contact>().Where(c => c.First == "Dave" && c.Last == "Smith").ToResource()
}
过滤器的定义是
public class Filter
{
public string FilterBy { get; set; }
public string FilterValue { get; set; }
}
【问题讨论】:
-
嗨斯科特,你最后找到解决方案了吗?需要做类似的事情。
标签: .net query-string uri pattern-matching openrasta