webApi中參數傳遞

webApi中參數傳遞前端

一:無參數的get方法;web

前端:   ajax

 function GetNoParam() {
        //爲了統一:咱們都採用$.ajax({}) 方法;
        $.ajax({
            url: '/api/User/GetNoParam',
            type: 'get',
            dataType: 'application/json',  //application/xml webapi 返回的數據類型,客戶端請求時添加在請求頭中
                                          //當沒法轉換成客戶想要的數據時,將報錯;
            success: function (data) {
                alert(data);
                $.each(data, function (index, item) {
                    alert(item["Name"]);
                })
            }
        });
    }

後端:json

   public List<User> GetNoParam()
        {
            var userList = new List<User>
            {
                new User{Id=1,Name="Jack"},
                new User{Id=2,Name="Frank"}
            };

            return userList;

        }

二:get+一個參數後端

前端:api

 //經過get傳遞一個參數的方法;
    function GetByOneParam() {
        $.ajax({
            url: '/api/User/GetByOneParam',
            type: 'get',
            data:{"Name":"Jack"},
            dataType: 'json',
            success: function (data) {
                var value = data;
            }
        });
    }

後端:app

  public List<User> GetByOneParam(string Name)
        {
            //這裏咱們傳遞一個參數:
            var userList = new List<User>
            {
                new User{Id=1,Name="Jack"},
                new User{Id=2,Name="Frank"}
            };
            var query = (from u in userList
                          where u.Name == Name
                          select u
                         ).ToList();
            return query;
        }

三:get+兩個參數或以上;post

前端:編碼

function GetByTwoParam() {
        $.ajax({
            url: '/api/User/GetByOneParam',
            type: 'get',
            data:{"Name":"Jack","Id":1},
            dataType: 'json',
            success: function (data) {
                var value = data;
            }
        });
    }

後端:url

   public List<User> GetByTwoParam(string Name,int Id)
        {
            //這裏咱們傳遞一個參數:
            var userList = new List<User>
            {
                new User{Id=1,Name="Jack"},
                new User{Id=2,Name="Frank"}
            };
            var query = (from u in userList
                          where u.Name == Name && u.Id==Id
                          select u
                         ).ToList();
            return query;
        }

 

四:POST無參數返回數據值

 前端:

    //經過post的方法來獲取數據;
    function PostNoParam() {
        $.ajax({
            url: '/api/User/PostNoParam',
            type: 'Post',//post方式
            dataType: 'json',
            success: function (data) {
                var value = data;
            }
        });
    }

 後端:

 public List<User> PostNoParam()
        {
            var userList = new List<User>
            {
                new User{Id=1,Name="Jack"},
                new User{Id=2,Name="Frank"}
            };

            return userList;
        }

五:post+一個參數(當心這裏有陷阱)

前端:

 function PostByOneParam() {
        $.ajax({
            url: '/api/User/PostByOneParam',
            type: 'Post',//post方式
            data:{"":"Jack"}, //注意這裏的key值是空的
            dataType: 'json',
            success: function (data) {
                var value = data;
            }
        });

    }

後端:

      //注意這裏的關鍵是添加一個:FromBody
      // to force web api to read simple type from the request body
      // add [FromBody] attribute to the para
      //[FromBody] 就告訴Web API 要從post請求體重去獲取參數的值。
      //Web API 的模型綁定器但願找到 [FromBody] 並非咱們常見的 key=value 的鍵名的值,也就是說, 不是 key=value ,而是 =value 。
      //在前端key爲空值
      //還有一個特色:[FromBody] 修飾的參數只能有一個。咱們須要對傳遞的多個參數進行封裝才行。
        public List<User> PostByOneParam([FromBody]string Name)
        {
            var userList = new List<User>
            {
                new User{Id=1,Name="Jack"},
                new User{Id=2,Name="Frank"}
            };
            var query = ( from u in userList
                          where u.Name == Name
                          select u
                         ).ToList();


            return query;
        }

 

六:POST 提交多個參數;

 前端:

 //組合多個參數
    function PostByMoreParam() {
        //或者這種方式也能夠的額
        var data = { Name: "jack", Id: 1 };
        $.ajax({
            url: '/api/User/PostByMoreParam',
            type: 'Post',//post方式
            data: data,  //這樣傳遞對象 後臺是可以獲取到值滴呀
            dataType: 'json',
            success: function (data) {
                var value = data;
            }
        });
    }
   //或則這樣寫
    function PostByMoreParam1() {
        var data = { Name: "jack", Id: 1 };
        var value = JSON.stringify(data);
        //使用JSON.stringify轉化一下;
        //傳遞的數據格式是json字符串
        $.ajax({
            url: '/api/User/PostByMoreParam',
            type: 'Post',//post方式
            data: value, 
            dataType: 'json',
            contentType: 'application/json', //若是你使用了 JSON.stringify將對象轉化成了字符串,那麼這裏就要添加這個;
            success: function (data) {
                var value = data;
            }
        });
        //application/x-www-form-urlencoded 表示的是:窗體數據被編碼爲名稱/值對。
        //並非json格式對於的 application/json
    }

 

後端:

 public List<User> PostByMoreParam(User user)  //這裏是實體對象滴呀
        {
            var userList = new List<User>
            {
                new User{Id=1,Name="Jack"},
                new User{Id=2,Name="Frank"}
            };
            var query = (from u in userList
                         where u.Name == user.Name && u.Id == user.Id
                         select u
                         ).ToList();


            return query;
        }

 

7.傳遞多個不一樣對象的Post請求

前臺:

function PostMoreObj() {
        var stu = { Name: "jack", Id: 1 };
        var course = { Id: 1, CourseName: "語文", SId: 1 };
        //嘗試直接這樣傳遞看看得得行滴呀;
        $.ajax({
            url: '/api/User/PostMoreObj',
            type: 'Post',//post方式
            data: { "user": stu, "course": course },
            dataType: 'json',
            success: function (data) {
                alert(typeof(data));
                var value = data;
            }
        });
    }

後臺:

 //有時候咱們還會遇到須要傳遞多個不一樣對象參數的狀況,
        //對於這種特殊的狀況在 Json.Net 中爲咱們提供了一個 名爲 JObject 的通用對象容器
        public bool PostMoreObj(Newtonsoft.Json.Linq.JObject jData)
        {
            dynamic json = jData;
            Newtonsoft.Json.Linq.JObject juser = json.user;
            Newtonsoft.Json.Linq.JObject jcourse = json.course;

            var stu   =  juser.ToObject<User>();
            var course = jcourse.ToObject<CourseInfo>(); //而後就轉化成了咱們想要的數據滴呀;

            return true;
        }

 不過在新的公司裏面,採用的是代理的方式,因此這些方法可能暫時用不到(是否是以爲很高端,代理哦~)

相關文章
相關標籤/搜索