OpenRasta で、同じキーの値の配列を送信し、クエリ パラメーターの配列を受け入れるハンドラー メソッドにマップできる Uri パターンを持つことは可能ですか。
例: コレクションから Dave Smith という名前の連絡先をすべて返します。
HTTP GET /contacts?filterBy=first&filterValue=デイブ&filterBy=last&filterValue=スミス
以下の構成で:
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()
}
ここで、Filter は次のように定義されます
public class Filter
{
public string FilterBy { get; set; }
public string FilterValue { get; set; }
}