WebApi 方法的参数类型总结。
1:[HttpGet]
①:get方法之无参数。
[HttpGet] public IHttpActionResult GetStudentInfor() { List<StudentModel> stlists = new List<StudentModel>(); stlists.Add(new StudentModel { hno = "1001", hname = "龙大炳", hobject = "WebApi", hscore = "90" }); stlists.Add(new StudentModel { hno = "1002", hname = "龙大炳", hobject = "Ajax", hscore = "80" }); stlists.Add(new StudentModel { hno = "1003", hname = "龙大炳", hobject = "SignalR", hscore = "88" }); return Json<List<StudentModel>>(stlists); }
Client,Ajax调用。
function Sumittomain() {
$.ajax({ url: 'http://192.168.0.102/webApiDemo/api/WebApiTest/GetStudentInfor',//'/api/WebAPITest/GetString',
contentType: 'application/json;charset=utf-8',
type: 'get', ////数据类型必须有 //dataType: "text",
async: true,//异步
success: function (data) //成功后的回调方法
{ alert(JSON.stringify(data))//弹出框
alert(JSON.stringify(stuentmodel))//弹出框
window.location.href = "EasyUILoutMain.aspx";//可以跳转.
},
error: function () {
alert("失败!");
window.location.href = "EasyUILoutMain.aspx";//可以跳转. }
});
}
②:get方法之基础参数。
/// <summary> /// Get,一个基础参数。 /// </summary> /// <param name="hname"></param> /// <returns></returns> [HttpGet] public IHttpActionResult GetStudentInforBasePara(string hno,string hname) { List<StudentModel> stlists = new List<StudentModel>(); stlists.Add(new StudentModel { hno = "1001", hname = "龙大炳", hobject = "WebApi", hscore = "90" }); stlists.Add(new StudentModel { hno = "1002", hname = "龙大", hobject = "Ajax", hscore = "80" }); stlists.Add(new StudentModel { hno = "1003", hname = "longdb", hobject = "SignalR", hscore = "88" }); StudentModel retstu = stlists.FirstOrDefault(stu => stu.hname == hname); return Json<StudentModel>(retstu);//, Newtonsoft.Json.JsonSerializer.CreateDefault.stlists); }
Client,Ajax调用。
//get,基础数据做参数。参数放在uri后,或者data中都可以,但最终还是把参数串接在uri中。by ldb 2017.11.13 20:18 //get请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),而post请求则是放在http协议包的包体中。 function GetStudentInforBasePara() { $.ajax({ url: 'http://localhost/webApiDemo/api/WebApiTest/GetStudentInforBasePara',//?hno=1001&hname=longdb', type: 'get', //contentType: 'application/json',//有无都可以。 data: {hno:"1001",hname: "龙大炳"},//{ hno: "1001", hname: "龙大炳", hobject: "SignalR", hscore: "80" }, async: true,//异步 //crossDomain: true, success: function (data) //成功后的回调方法 { alert(JSON.stringify(data))//弹出框 window.location.href = "EasyUILoutMain.aspx";//可以跳转. }, error: function () { alert("失败!"); //window.location.href = "EasyUILoutMain.aspx";//可以跳转. } }); };
③:get方法之实体参数。
/// <summary> /// get,实体参数。[FromUri]加了也取不到Client传过来的参数。 /// </summary> /// <param name="st"></param> /// <returns></returns> [HttpGet] public IHttpActionResult GetStudentInforModelParaUri([FromUri]StudentModel st) { List<StudentModel> stlists = new List<StudentModel>(); stlists.Add(new StudentModel { hno = "1001", hname = "龙大炳", hobject = "WebApi", hscore = "90" }); stlists.Add(new StudentModel { hno = "1002", hname = "龙大", hobject = "Ajax", hscore = "80" }); stlists.Add(new StudentModel { hno = "1003", hname = "longdb", hobject = "SignalR", hscore = "88" }); StudentModel retstu = stlists.FirstOrDefault(stu => stu.hname == st.hname); return Json<StudentModel>(retstu);//, Newtonsoft.Json.JsonSerializer.CreateDefault.stlists); }
Client,Ajax调用。
//get,实体参数,不报错,但是后台取不到传过去的参数。 function GetStudentInforModelParaUri() { var studentmodel = { hno: "1001", hname: "龙大炳", hobject: "SignalR", hscore: "80" }; $.ajax({ url: 'http://localhost/webApiDemo/api/WebApiTest/GetStudentInforModelParaUri',//?hno=1001&hname=longdb', type: 'get', data: studentmodel,// async: true,//异步 success: function (data) //成功后的回调方法 { alert(JSON.stringify(data))//弹出框 window.location.href = "EasyUILoutMain.aspx";//可以跳转. }, error: function () { alert("失败!"); } }); };
④:get方法之实体参数转换成JSon。
/// <summary> /// get,实体参数转换成JSon。 /// </summary> /// <param name="st"></param> /// <returns></returns> [HttpGet] public IHttpActionResult GetStudentInforModelParaJSON(string stuJSON) { //把JSON转换成StudentModel对象。 StudentModel st = Newtonsoft.Json.JsonConvert.DeserializeObject<StudentModel>(stuJSON); List<StudentModel> stlists = new List<StudentModel>(); stlists.Add(new StudentModel { hno = "1001", hname = "龙大炳", hobject = "WebApi", hscore = "90" }); stlists.Add(new StudentModel { hno = "1002", hname = "龙大", hobject = "Ajax", hscore = "80" }); stlists.Add(new StudentModel { hno = "1003", hname = "longdb", hobject = "SignalR", hscore = "88" }); StudentModel retstu = stlists.FirstOrDefault(stu => stu.hname == st.hname); return Json<StudentModel>(retstu);//, Newtonsoft.Json.JsonSerializer.CreateDefault.stlists); }
Client,Ajax调用。
//get,实体先转换成json.成功。 function GetStudentInforModelParaJSON() { var studentmodel = { hno: "1001", hname: "龙大炳", hobject: "SignalR", hscore: "80" }; $.ajax({ type: 'get', url: 'http://localhost/webApiDemo/api/WebApiTest/GetStudentInforModelParaJSON', contentType: "application/json", data: { stuJSON: JSON.stringify(studentmodel) },// async: true,//异步 success: function (data) //成功后的回调方法 { alert(JSON.stringify(data))//弹出框 window.location.href = "EasyUILoutMain.aspx";//可以跳转. }, error: function () { alert("失败!"); } }); };
2:[HttpPost]
①:ApiController中方法参数类型之单个参数。
/// <summary>
/// post,一个参数。用[FromBody]去http的请求体里面去取参数。
/// Client请求成功
/// </summary>
/// <param name="hname"></param>
/// <returns></returns>
[HttpPost]
public IHttpActionResult PostStudentInforOnePara([FromBody]string hname)
{
List<StudentModel> stlists = new List<StudentModel>();
stlists.Add(new StudentModel { hno = "1001", hname = "龙", hobject = "WebApi", hscore = "90" });
stlists.Add(new StudentModel { hno = "1002", hname = "龙大", hobject = "Ajax", hscore = "80" });
stlists.Add(new StudentModel { hno = "1003", hname = "longdb", hobject = "SignalR", hscore = "88" });
StudentModel retstu = stlists.FirstOrDefault(stu => stu.hname == hname);
return Json<StudentModel>(retstu);//, Newtonsoft.Json.JsonSerializer.CreateDefault.stlists);
}
Client 中Ajax方式调用:
//POST WebApi之一个参数的方法。成功
function SumittomainPostOne() {
$.ajax({
url: 'http://192.168.0.102/webApiDemo/api/WebApiTest/PostStudentInforOnePara',
type: 'post',
data: { "": "longdb" },//一个参数时,必须这样写,webapi中http的请求体里面去取参数才能取到。
async: true,//异步
success: function (data) //成功后的回调方法
{
alert(JSON.stringify(data))//弹出框
window.location.href = "EasyUILoutMain.aspx";//可以跳转.
},
error: function () {
alert("失败!");
window.location.href = "EasyUILoutMain.aspx";//可以跳转.
}
});
}
②://post webapi,方法参数之实体类型。
/// <summary> /// post,实体作为参数。 /// </summary> /// <param name="st"></param> /// <returns></returns> [HttpPost] public IHttpActionResult PostStudentInforModel(StudentModel st) { List<StudentModel> stlists = new List<StudentModel>(); stlists.Add(new StudentModel { hno = "1001", hname = "龙", hobject = "WebApi", hscore = "90" }); stlists.Add(new StudentModel { hno = "1002", hname = "龙大", hobject = "Ajax", hscore = "80" }); stlists.Add(new StudentModel { hno = "1003", hname = "longdb", hobject = "SignalR", hscore = "88" }); StudentModel retstu = stlists.FirstOrDefault(stu => stu.hname == st.hname); return Json<StudentModel>(retstu);//, Newtonsoft.Json.JsonSerializer.CreateDefault.stlists); }
Client,Ajax调用api.
//post webapi,实体类型,能成功,但是参数传不到api中。 function PostStudentInforModelPara() { var studentmodel = { hno: "1001", hname: "longdb", hobject: "SignalR", hscore: "80" }; $.ajax({ url: "http://localhost/webApiDemo/api/WebApiTest/PostStudentInforModel", type: "post", //contentType: "application/json", data: studentmodel, async: true,//异步 success: function (data) //成功后的回调方法 { alert(JSON.stringify(data))//弹出框 window.location.href = "EasyUILoutMain.aspx";//可以跳转. }, error: function () { alert("失败!"); //window.location.href = "EasyUILoutMain.aspx";//可以跳转. } }); };
③:post,方法之数组。
/// <summary> /// post,数组(localhost--成功。ip测试不行,估计是跨域的问题。)。 /// </summary> /// <param name="st"></param> /// <returns></returns> [HttpPost] public IHttpActionResult PostStudentInforArray(string[] st) { List<StudentModel> stlists = new List<StudentModel>(); stlists.Add(new StudentModel { hno = "1001", hname = "龙", hobject = "WebApi", hscore = "90" }); stlists.Add(new StudentModel { hno = "1002", hname = "龙大", hobject = "Ajax", hscore = "80" }); stlists.Add(new StudentModel { hno = "1003", hname = "longdb", hobject = "SignalR", hscore = "88" }); StudentModel retstu = stlists.FirstOrDefault(stu => stu.hname == st[1]); return Json<StudentModel>(retstu);//, Newtonsoft.Json.JsonSerializer.CreateDefault.stlists); }
Client,Ajax调用。
//post webapi,数组类型.localhost情况成功,改成固定ip就不行了,跨域的原因?? function PostStudentInforArraryPara() { var studentarr = ["1001", "龙大", "SignalR", "80"]; $.ajax({ url: 'http://localhost/webApiDemo/api/WebApiTest/PostStudentInforArray', type: 'post', contentType: 'application/json', data: JSON.stringify(studentarr), async: true,//异步 //crossDomain: true, success: function (data) //成功后的回调方法 { alert(JSON.stringify(data))//弹出框 window.location.href = "EasyUILoutMain.aspx";//可以跳转. }, error: function () { alert("失败!"); //window.location.href = "EasyUILoutMain.aspx";//可以跳转. } }); };
④:post方法之集合。
/// <summary> /// 集合。 /// </summary> /// <param name="st"></param> /// <returns></returns> [HttpPost] public IHttpActionResult PostStudentInforList(List<StudentModel> st) { List<StudentModel> stlists = new List<StudentModel>(); stlists.Add(new StudentModel { hno = "1001", hname = "龙", hobject = "WebApi", hscore = "90" }); stlists.Add(new StudentModel { hno = "1002", hname = "龙大", hobject = "Ajax", hscore = "80" }); stlists.Add(new StudentModel { hno = "1003", hname = "longdb", hobject = "SignalR", hscore = "88" }); StudentModel retstu = stlists.FirstOrDefault(stu => stu.hname == st[0].hname); return Json<StudentModel>(retstu);//, Newtonsoft.Json.JsonSerializer.CreateDefault.stlists); }
Client,Ajax调用。
//post webapi,集合。localhost情况成功,改成固定ip就不行了(SCRIPT7002: XMLHttpRequest: 网络错误 0x80070005, 拒绝访问。),跨域的原因?? function PostStudentInforListPara() { var studentarr = [ { hno: "1001", hname: "龙", hobject: "SignalR", hscore: "80" }, { hno: "1001", hname: "龙大", hobject: "SignalR", hscore: "80" }, { hno: "1001", hname: "longdb", hobject: "SignalR", hscore: "80" } ]; $.ajax({ url: 'http://localhost/webApiDemo/api/WebApiTest/PostStudentInforList', type: 'post', contentType: 'application/json', data: JSON.stringify(studentarr), async: true,//异步 //crossDomain: true, success: function (data) //成功后的回调方法 { alert(JSON.stringify(data))//弹出框 window.location.href = "EasyUILoutMain.aspx";//可以跳转. }, error: function () { alert("失败!"); //window.location.href = "EasyUILoutMain.aspx";//可以跳转. } }); };