fetch("http://localhost:58513/api/decheng/", {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: { "LogId": 3, "UserName": "test" },
})fetch通過如上代碼,在webapi是無法獲取到值的,不知道正確的方法應該是什么?
采用'Content-Type': 'application/json',傳遞json字串是可以的,我只是想知道當'Content-Type': 'application/x-www-form-urlencoded'時如何向webapi傳遞引數及獲取值
uj5u.com熱心網友回復:
默認就是以表單引數傳遞的.webapi要從formdata中取引數
如果是json傳遞,要從inputstream中取
url引數,querystring取.
前后對應好了就沒有問題
uj5u.com熱心網友回復:
默認應該是text/plain吧,我如果去掉Content-Type,會顯示
這一點應該是和ajax不同的。
傳遞json字串的話,是可以正常決議的。只是我想知道如何傳遞formdata,在WEBAPI端又如何獲取到傳遞的formdata?
uj5u.com熱心網友回復:
這個問題我之前研究過.你可以看下我之前寫的帖子.https://bbs.csdn.net/topics/392146314
這個你只能約束一下前臺客戶端了.
如果客戶端采用formdata方式 你api中的方法 如果使用frombody 這種特性的物件 是無法收到值的.
你只能
HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];
HttpRequestBase request = context.Request;
var id= request.Form["id"];
這種形式.. 雖然你可以獲取所有的form . 自己進行轉換.. 但是還是 比較麻煩的.
而且這種形式 key還不能重復..
所以你就約束前臺呼叫 只能postjson這種方式就行了.. 目前我還沒有太好的解決方案.. 因為是自己不想寫太多的代碼..
uj5u.com熱心網友回復:
是的,我也是和你一樣,想知道有沒有辦法在使用frombody的情況下,獲取formdata的值。
uj5u.com熱心網友回復:
感謝!如果沒有更好的辦法,那就只能限制客戶端傳值方式了uj5u.com熱心網友回復:
后端多載看行不行,只能這樣uj5u.com熱心網友回復:
其實 我最初做這種的想法是這樣的..因為呼叫者 一般都不清楚 從哪里copy過來的webclient. 然后就請求.
一般有2種type 一種是formdata一種是json 我想作為服務端 能決議2種不同的方式.而不用強制客戶端.
微信公眾號的介面 就是能兼容2種模式..
后來想了下 實作起來比較麻煩.. 我就懶得弄了. .
uj5u.com熱心網友回復:
fetch 'application/x-www-form-urlencoded'用URLSearchParams
fetch 'multipart/form-data'
用FormData
fetch 'application/json'
用JSON.stringify({})
如果未指定'Content-Type', Chrome 會根據body 猜測.
uj5u.com熱心網友回復:
也不麻煩,做一個公用的接收引數類,就是翻譯類,把所有型別的引數轉換成 字典型別的。默認用form接收,form里沒資料就用json接收,簡單,一般就這兩種就行了,或者用Content-Type判斷也可以,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/19470.html
標籤:ASP.NET
下一篇:NetMQ的使用
