在 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; }
}