码迷,mamicode.com
首页 > Windows程序 > 详细

asp.net webapi初探(一)

时间:2016-05-05 12:44:03      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:

本人对webapi尚没有深入研究,初次接触发现了在数据请求时的几点现象。

先切入代码

1.如果action中开头带有Get默认就是get方式,不带Get默认就是post方式

 public string GetUsers0(string id)
        {
            List<UserProfile> list = UserProfileBiz.GetBatchTest() as List<UserProfile>;
            //返回json字符串
            return JsonConvert.SerializeObject(list);
           
        }


  $(function () {
      
        $.ajax({
            url: "http://localhost:6556/api/User/GetUsers0",
            type: "get",
            dataType: "json",
            data: {"ID":"1"},
            beforeSend: function (XMLHttpRequest) {
            },
            success: function (data, status) {
                $(data).each(function () {
                    alert(this.UserName);
                });
            },
            complete: function (data, status) {
            },
            error: function () {
            }
        });

    });

get方式可以请求到值,ID得大小写问题可以忽略,但是如果改成post方式,当然就请求不到了

如果改成post方式请求

就必须

 [HttpPost]
        public string GetUsers0([FromBody]string id)
        {
            List<UserProfile> list = UserProfileBiz.GetBatchTest() as List<UserProfile>;
            //返回json字符串
            return JsonConvert.SerializeObject(list);
           
        }

 

现在讲action改成任意不带Get开头的,然后用get方式请求发现请求不到,这是因为action默认已变成post请求的方式,改成post后,没有问题

public string MyUsers0([FromBody]string id)
        {
            List<UserProfile> list = UserProfileBiz.GetBatchTest() as List<UserProfile>;
            //返回json字符串
            return JsonConvert.SerializeObject(list);
           
        }


 $.ajax({
            url: "http://localhost:6556/api/User/MyUsers0",
            type: "post",
            dataType: "json",
            data: {"ID":"1"},
            beforeSend: function (XMLHttpRequest) {
            },
            success: function (data, status) {
                $(data).each(function () {
                    alert(this.UserName);
                });
            },
            complete: function (data, status) {
            },
            error: function () {
            }
        });

 

但是依旧需要一个FromBody特性声明,针对非对象类型的传值方式

 

如果改成实体参数会是什么情况呢

 public string MyUsers0(UserProfile user)
        {
            List<UserProfile> list = UserProfileBiz.GetBatchTest() as List<UserProfile>;
            //返回json字符串
            return JsonConvert.SerializeObject(list);
           
        }

 

对于实体类型参数并不需要声明FromBody特性了。

至于为什么需要继续探究。

 

asp.net webapi初探(一)

标签:

原文地址:http://www.cnblogs.com/njcxwz/p/5461197.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!