簡體   English   中英

使用查詢字符串參數發布請求

[英]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被調用(按預期方式)。 但是, pagepageSize均為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM