• 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";//可以跳转.
                 }
             });
         };
  • 相关阅读:
    CodeForces-455A Boredom
    UVA-12627 Erratic Expansion
    汉诺塔系列问题
    CodeForces-999D Equalize the Remainders
    CodeForces-1061D TV Shows
    CodeForces-1061B Views Matter
    UVALive-7261 Xiongnu's Land
    HDU-4990 Reading comprehension
    -------------------------------用MyBatis处理表与表之间的关联关系----------------------------------
    -------------计算机里面算法-----------
  • 原文地址:https://www.cnblogs.com/longdb/p/7820436.html
Copyright © 2020-2023  润新知