zoukankan      html  css  js  c++  java
  • webApi中参数传递

    webApi中参数传递

    一:无参数的get方法;

    前端:   

     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"]);
                    })
                }
            });
        }

    后端:

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

    二:get+一个参数

    前端:

     //通过get传递一个参数的方法;
        function GetByOneParam() {
            $.ajax({
                url: '/api/User/GetByOneParam',
                type: 'get',
                data:{"Name":"Jack"},
                dataType: 'json',
                success: function (data) {
                    var value = data;
                }
            });
        }

    后端:

      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+两个参数或以上;

    前端:

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

    后端:

       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;
            }

     不过在新的公司里面,采用的是代理的方式,所以这些方法可能暂时用不到(是不是觉得很高端,代理哦~)

  • 相关阅读:
    笔记35 跨重定向请求传递数
    判断邮箱的正则表达式
    按钮
    async await 的用法
    笔记34 Spring MVC的高级技术——处理multipart形式的数据
    Convert Sorted Array to Binary Search Tree
    Binary Tree Zigzag Level Order Traversal
    Unique Binary Search Trees,Unique Binary Search Trees II
    Validate Binary Search Tree
    Populating Next Right Pointers in Each Node,Populating Next Right Pointers in Each Node II
  • 原文地址:https://www.cnblogs.com/mc67/p/5698407.html
Copyright © 2011-2022 走看看