1.在webapi中使用controller/action/id的路徑配置,打開文件[App_Start] -[WebApiConfig]
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
2.直接使用[HttpPost]過濾器,為action添加實現方法:
[HttpPost]
// POST api/<controller>
public string AdminLogin(string userName,string passWord)
{
return "";
}
產生的問題:前端將“type”改為“Post”方式,無論如何都獲取不到該方法。
3.解決方案一:
①添加中轉的對象類,用於存儲參數。
public class AdminLogin
{
public string UserName { get; set; }
public string PassWord { get; set; }
}
②修改action參數配置。
[HttpPost]
// POST api/<controller>
public string AdminLogin([FromBody]AdminLogin adminLogin)
{
return adminLogin.UserName;
}
③前端調用方法:
$.ajax({
type: "POST", url: AdminApi.AdminLogin,
data: {UserName:"xxx",PassWord:"XXX"},
success: function (data) {
//處理方法
}
});
4.解決方案二:
①修改action參數為dynamic及方法調用:
[HttpPost]
// POST api/<controller>
public string AdminLogin([FromBody]dynamic adminLogin)
{
string userName = adminLogin.UserName;
string passWord = adminLogin.PassWord;
return userName;
}
②修改前端調用方式:
var obj = { UserName: username, PassWord: password };
//調用api驗證方法
$.ajax({
type: "POST", url: AdminApi.AdminLogin,
data: JSON.stringify(obj), contentType: "application/json",
success: function (data) {
//內部實現方法
}
});
