【WebApi】(二)Asp.net web api中的坑-【http get請求中的參數】


  webapi主要的用途就是把【指定的參數】傳進【api后台】,api接收到參數,進行【相應的業務邏輯處理】,【返回結果】。所以怎么傳參,或者通俗的說,http請求應該怎么請求api,api后台應該怎么寫,才能准確的接收到參數。

HttpGet 請求

1、get請求,單參數

前端ajax

       var url = 'api/EnterOrExit/test';
       var para = {};
       para["Phone"] = "phone13880825221";
       para["UID"] = "uid287572292";

       $.get(url, para, function () { }, "application/json");

后端

        [HttpGet]
        public IHttpActionResult GetData2(string Phone)
        {
            string result = "接口通了";
            return Ok<string>(result);
        }

經調試,后端Phone="phone13880825221",傳參成功。

**********************************************************************************

2、get請求,傳多個參數

前端ajax

       var url = 'api/EnterOrExit/test';
       var para = {};
       para["Phone"] = "phone13880825221";
       para["UID"] = "uid287572292";

       $.get(url, para, function () { }, "application/json");

后端

[HttpGet]
        public IHttpActionResult GetData2(string Phone,string UID)
        {
            string result = "接口通了";
            return Ok<string>(result);
        }

經調試,后端Phone="phone13880825221",UID="uid287572292"; 傳參成功。

ps,后端參數名稱,無論你是寫phone,PhOne,Uid,uid,uId,你都可以接收到前端ajax請求傳遞的參數,這個是忽略大小寫的。

**********************************************************************************

3、get請求,傳實體

前端ajax

       var url = 'api/EnterOrExit/test';
       var para = {};
       para["Phone"] = "phone13880825221";
       para["UID"] = "uid287572292";

       $.get(url, para, function () { }, "application/json");

后端

[HttpGet]
        public IHttpActionResult GetData2(RequestModel model)
        {

            string msg = "";
            string code = "";
            string result = "接口通了";
            return Ok<string>(result);

        }

經調試,RequestModel =null,納尼?咋回事呢?來,firefox抓包,瞅一下,

image

嗦嘎,get請求的時候,默認是將參數全部放到了url里面直接以string的形式傳遞的,后台自然接不到了。!!string形式,哦,是不是很容易就想到了一個思路?把json對象序列化為json字符串,后台接收到這個json格式字符串,再反序列化成一個實體,這也是一種解決方法。

前端ajax

       var url = 'api/EnterOrExit/test';
       var para = {};
       para["Phone"] = "phone13880825221";
       para["UID"] = "uid287572292";

       var requestStr=JSON.stringify(para);

       $.get(url, requestStr, function () { }, "application/json");

后端

[HttpGet]
        public IHttpActionResult GetData2(string requestStr)
        {

            var model= Newtonsoft.Json.JsonConvert.DeserializeObject<TB_RequestModel>(requestStr);

            string msg = "";
            string code = "";
            string result = "接口通了";
            return Ok<string>(result);

        }

這是一種方式,當然還有更佳,更好的方法,根據查園子里的大神的博客,知道Get請求的時候可以在參數里面加上[FromUri]即可直接得到對象。

前端ajax

       var url = 'api/EnterOrExit/test';
       var para = {};
       para["Phone"] = "phone13880825221";
       para["UID"] = "uid287572292";  

       $.get(url, para , function () { }, "application/json");

后端

      [HttpGet]
      public IHttpActionResult test([FromUri]RequestModel model)
      {
          string msg = "";
          string code = "";
          string result = "接口通了";
          return Ok<string>(result);
      }

經測試,model不為空,且能獲取值。

——————————————————————————————————————————————————————

 

知識點:HTTP協議中get請求的數據會附在URL之后(就是把數據放置在HTTP協議頭中),而post請求則是放在http協議包的包體中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM