asp.net webapi初探(一)

本人对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特性了。

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

 

posted @ 2016-05-05 11:27  一条大河啊波浪宽啊  阅读(252)  评论(0编辑  收藏  举报