起因
近期使用WebApi
過程中總遇到各種參數(shù)傳遞問題妄辩,特此總結(jié)復(fù)習
以下服務(wù)示例均為Web Api 2
場景一 Get
- 服務(wù)示例
// GET: api/TestWebApi
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET: api/TestWebApi/5
public string Get(string id)
{
return "value";
}
- 調(diào)用示例
<script>
$.ajax({
url: "http://localhost:14884/api/TestWebApi",
type: "get",
data: {
//"id": 5,
"code": "1", //無法獲取
"value": "hello" //無法獲取
},
success: function (data) {
console.log(data);
}
});
</script>
小結(jié)
若調(diào)用中參數(shù)未匹配(本例中為注釋id
)楞黄,則執(zhí)行無參方法,輸出為(2) ["value1", "value2"]
若調(diào)用中參數(shù)匹配致盟,則執(zhí)行有參方法碎税,輸出為value
場景二 Post
- 服務(wù)示例
public class DataModel
{
public string code { get; set; }
public string value { get; set; }
}
// POST: api/TestWebApi
public string Post([FromBody]DataModel dm)
{
return "Api捕獲參數(shù):" + dm.code + "_" + dm.value;
}
- 調(diào)用示例
<script>
$.ajax({
url: "http://localhost:14884/api/TestWebApi",
type: "post",
data: {
"id": 5, //無法獲取
"code": "1", //可以獲取
"value": "hello" //可以獲取
},
success: function (data) {
console.log(data);
}
});
</script>
Post 參數(shù)正常獲取
小結(jié)
Post
提交時雷蹂,常用實體搭配使用昧港,注意保持參數(shù)前后臺一致即可正常解析
場景三 Post List數(shù)組
- 服務(wù)示例
public class DataModel
{
public string code { get; set; }
public string value { get; set; }
}
// POST: api/TestWebApi
public string Post([FromBody]List<DataModel> dm)
{
return "Api捕獲參數(shù):" + dm[0].code + "_" + dm[0].value;
}
- 調(diào)用示例
var temp_data = [{
"code": "1",
"value": "hello"
}, {
"code": "2",
"value": "world"
}];
$.ajax({
url: "http://localhost:14884/api/TestWebApi",
type: "post",
data: temp_data,
success: function (data) {
console.log(data);
}
});
List Post 參數(shù)無法獲取
Request Headers
- 修改后調(diào)用示例
var temp_data = [{
"code": "1",
"value": "hello"
}, {
"code": "2",
"value": "world"
}];
temp_data = JSON.stringify(temp_data);
$.ajax({
url: "http://localhost:14884/api/TestWebApi",
contentType: 'application/json; charset=utf-8',//將json數(shù)據(jù)以request payload的形式發(fā)起請求
type: "post",
data: temp_data,
success: function (data) {
console.log(data);
}
});
Post List參數(shù)獲取
場景三 部署后 405 異常補充說明
將場景三Web Api
代碼部署后述呐,發(fā)現(xiàn)頁面調(diào)用會出現(xiàn) 405
異常
405 異常
通過檢索排除等方式,判斷
IIS
設(shè)置問題代虾,移除使用Web Api
自動生成Web.config
中 handlers
里remove OPTIONSVerbHandler
即可
處理程序映射
Web.config
參考
ASP.NET Web API(一):使用初探进肯,GET和POST數(shù)據(jù)
WebApi后端的List<String>前端如何發(fā)送?
aspnet webapi 跨域請求 405錯誤