[英]Post request with query string parameters
我正在嘗試為復雜的搜索類型構建Web API。 我想在結果中支持分頁。 搜索的“狀態”很復雜,因此不適合持久存儲在查詢字符串中。 但我希望將分頁選項包含在查詢字符串中。
我已經實現了兩種方法,如下所示,並且Web 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
}
在將SearchRequest
到/api/AdvancedSearch
,將調用方法1,該方法又調用方法2,該方法進行搜索並打包結果。 如您所願,此結果中包含一個URL(如果有更多結果頁可用),是下一頁要發布到的URL。 正是按照我希望的那樣,基於此生成的URL是/api/AdvancedSearch?page=2&pageSize=20
。
然后,在我的調用代碼中,對第二個URL執行POST
。 僅方法2被調用(按預期方式)。 但是, page
和pageSize
均為null
。
我究竟做錯了什么? 或者您還需要看什么才能回答這個問題?
您需要使用 [FromUri]
裝飾參數:
public async Task<HttpResponseMessage<SearchResults>> Post(SearchRequest request, [FromUri]string page, [FromUri]string pageSize)
正如我在評論中說, HttpResponseMessage<T>
都被淘汰了,因為內容屬性HttpResponseMessage
將執行所有需要的操作。
我檢查了一下,並在帖子中傳遞了querystring參數,沒問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.