簡體   English   中英

如何在webapi中將查詢字符串傳遞給POST請求

[英]How to pass query string to POST request in webapi

我想將 WebApi 中的 GET 請求更改為 POST 請求,因為我發送的查詢字符串太大,即使使用最大字符串長度,我仍然收到 404 錯誤。 所以我在正文中發送搜索查詢,而不是我面臨問題的 URI,這里 ODataQueryOptions 對象沒有從 POST 方法中填充。 POST 請求現在看起來像這樣:

 [HttpPost]
    public HttpResponseMessage GetSession([FromBody] ODataQueryOptions<SessionModel> queryOptions)
    {
        return executeMethodA<DataBaseSessionResult, SessionModel>(
            () => sessionController.GetData(User, queryOptions),
            (resultObj) => FilterTranslator.ConvertTimeFormat(resultObj.Return.Data),
            (resultObj) => resultObj.Return.TotalRecords,
            (resultObj) => resultObj.ErrorCode);
    }

如您所見,我正在嘗試從請求正文而不是從 URI 填充查詢選項。 到目前為止,我還無法從請求中獲取要填充的 ODataQueryOptions 參數,並且該參數導致為“空”。 如果我刪除 '[FromBody]' 屬性,查詢選項對象將從請求 URI 中正確填充,但相同的 URI 長度問題仍然存在。

默認情況下,我們使用 Devextreme 組件創建 Ajax 調用。 因此,默認情況下,內容類型設置為“application/x-www-form-urlencoded”下面是我將 API 方法請求作為 POST 傳遞的代碼,如果這有助於並為問題添加更多清晰度

        public static ODataSourceBuilder ConfigureOData(this ODataSourceBuilder odsb, string url)
        return odsb
               .Url(url)
               .Version(4)
               .BeforeSend("function(e) { e.method = 'POST'; }")
               .OnLoading("function(e){ onDataLoading(e); }")
               .OnLoaded("function(e){ onDataLoaded(e); }")
               .ErrorHandler("function(e){ onErrorOccured(e); }");
    }

也許,這是客戶端的問題,您是否使用了一些 javascript 框架? 如果這是真的,您應該確保您的請求具有正確的標頭配置,例如內容類型 application/json

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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