複雑な検索タイプのWeb APIを構築しようとしています。私は結果にページングをサポートしたい。検索の「状態」は複雑なので、クエリ文字列に永続化するのにはあまり適していません。しかし、私は、ページングオプションがクエリ文字列に含まれるようにしたいと思います。クエリ文字列パラメータでのリクエストの投稿
以下の2つの方法を実装しました。ウェブAPIコードはと思われますが、クエリ文字列パラメータは決して割り当てられません。任意のヒントや、この上のアドバイスをいただければ幸いです。
public Task<HttpResponseMessage<SearchResults>> Post(SearchRequest request) //Method 1
{
return Post(request, null, null);
}
public async Task<HttpResponseMessage<SearchResults>> Post(SearchRequest request, string page, string pageSize) //Method 2
{
//All of the complex code, including...
if (PageNo < TotalPages)
{
searchResults.AddLink(new Link { Uri = Url.Route("DefaultApi", new {
controller = "AdvancedSearch",
page = (PageNo + 1).ToString(),
pageSize = PageSize.ToString() }),
Relation = "nextPost" });
}
//Final wrap up, etc
}
/api/AdvancedSearch
にSearchRequest
を掲示するには、方法1を順番に検索を行う方法2を呼び出し、結果をアップパッケージ化され、呼ばれています。うまくいけば分かるように、この結果に含まれているページ数が多い場合は、次のページに投稿するURLです。生成されたURLベースは/api/AdvancedSearch?page=2&pageSize=20
で、私が望んだのとまったく同じです。
私の呼び出しコードでは、次にこの2番目のURLにPOST
を実行します。方法2のみが呼び出されます(期待どおり)。しかし、page
とpageSize
の両方がnull
です。
私は間違っていますか?この質問に答えるために他に何が必要ですか?
以下
'HttpResponseMessage'が削除されているため、自分のデザインを変更する必要があります。 –
Aliostad
@Aliostad - その変更へのリンクはありますか?代わりになるものは何ですか? –
http://aspnetwebstack.codeplex.com/から最新のものをダウンロードすると、最新のSystem.Net.Http.dllにはもうそれがないことがわかります。 – Aliostad