• 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特性了。

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

  • 相关阅读:
    js 获取表单和页面控件数据
    vue axios upload 多个文件
    vue antd axios 使用
    antd vue 修改modal弹窗样式
    线性回归的改进-岭回归
    线性回归
    00
    集成学习方法之随机森林
    决策树
    第十讲 让机器像人类一样学习--强化学习-----学习总结
  • 原文地址:https://www.cnblogs.com/njcxwz/p/5461197.html
Copyright © 2020-2023  润新知