前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#进阶系列——WebApi 接口参数不再困惑:传参详解 下

C#进阶系列——WebApi 接口参数不再困惑:传参详解 下

作者头像
逸鹏
发布2018-04-10 15:08:16
1.2K0
发布2018-04-10 15:08:16
举报
文章被收录于专栏:逸鹏说道逸鹏说道

(1)基础类型数组

代码语言:javascript
复制
var arr = ["1", "2", "3", "4"];
    $.ajax({
        type: "post",
        url: "http://localhost:27221/api/Charging/SaveData",
        contentType: 'application/json',
        data: JSON.stringify(arr),        success: function (data, status) { }
    });
代码语言:javascript
复制
        [HttpPost]        public bool SaveData(string[] ids)
        {            return true;
        }

得到结果:

(2)实体集合

代码语言:javascript
复制
    var arr = [
        { ID: "1", NAME: "Jim", CREATETIME: "1988-09-11" },
        { ID: "2", NAME: "Lilei", CREATETIME: "1990-12-11" },
        { ID: "3", NAME: "Lucy", CREATETIME: "1986-01-10" }
    ];
    $.ajax({
        type: "post",
        url: "http://localhost:27221/api/Charging/SaveData",
        contentType: 'application/json',
        data: JSON.stringify(arr),        success: function (data, status) {}
    });
代码语言:javascript
复制
        [HttpPost]        public bool SaveData(List<TB_CHARGING> lstCharging)
        {            return true;
        }

得到结果:

4、后台发送请求参数的传递

上面写了那么多,都是通过前端的ajax请求去做的,我们知道,如果调用方不是web项目,比如Android客户端,可能需要从后台发送http请求来调用我们的接口方法,如果我们通过后台去发送请求是否也是可行的呢?我们以实体对象作为参数来传递写写代码试一把。

代码语言:javascript
复制
    public void TestReques()
    {
         //请求路径
            string url = "http://localhost:27221/api/Charging/SaveData";            //定义request并设置request的路径
            WebRequest request = WebRequest.Create(url);
            request.Method = "post";            //初始化request参数
            string postData = "{ ID: \"1\", NAME: \"Jim\", CREATETIME: \"1988-09-11\" }";            //设置参数的编码格式,解决中文乱码
            byte[] byteArray = Encoding.UTF8.GetBytes(postData);            //设置request的MIME类型及内容长度
            request.ContentType = "application/json";
            request.ContentLength = byteArray.Length;            //打开request字符流
            Stream dataStream = request.GetRequestStream();
            dataStream.Write(byteArray, 0, byteArray.Length);
            dataStream.Close();            //定义response为前面的request响应
            WebResponse response = request.GetResponse();            //获取相应的状态代码            Console.WriteLine(((HttpWebResponse)response).StatusDescription);            //定义response字符流
            dataStream = response.GetResponseStream();
            StreamReader reader = new StreamReader(dataStream);            string responseFromServer = reader.ReadToEnd();//读取所有            Console.WriteLine(responseFromServer);
    }

当代码运行到request.GetResponse()这一句的时候,API里面进入断点

尝试成功。

三、put请求

WebApi里面put请求一般用于对象的更新。它和用法和post请求基本相同。同样支持[FromBody],同样可以使用dynamic。

1、基础类型参数

代码语言:javascript
复制
    $.ajax({
        type: "put",
        url: "http://localhost:27221/api/Charging/Update",
        contentType: 'application/json',
        data: JSON.stringify({ ID: "1" }),        success: function (data, status) {}
    });
代码语言:javascript
复制
        [HttpPut]        public bool Update(dynamic obj )
        {            return true;
        }

2、实体作为参数

和post请求相同。

3、数组作为参数

和post请求相同。

四、delete请求

顾名思义,delete请求肯定是用于删除操作的。参数传递机制和post也是基本相同。下面简单给出一个例子,其他情况参考post请求。

代码语言:javascript
复制
    var arr = [
        { ID: "1", NAME: "Jim", CREATETIME: "1988-09-11" },
        { ID: "2", NAME: "Lilei", CREATETIME: "1990-12-11" },
        { ID: "3", NAME: "Lucy", CREATETIME: "1986-01-10" }
    ];
    $.ajax({
        type: "delete",
        url: "http://localhost:27221/api/Charging/OptDelete",
        contentType: 'application/json',        data: JSON.stringify(arr),
        success: function (data, status) {}
    });
代码语言:javascript
复制
        [HttpDelete]        public bool OptDelete(List<TB_CHARGING> lstChargin)
        {            return true;
        }

五、总结

以上比较详细的总结了WebApi各种请求的各种参数传递。每种情况都是博主实际代码测试过的,内容不难,但如果刚接触这么些东西还是需要一点时间去熟悉的,在此做个总结,希望能帮到刚刚接触WebApi的园友们。如果本文能帮到你,不妨推荐下,您的推荐是博主继续总结的动力!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-07-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 我为Net狂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • (1)基础类型数组
  • (2)实体集合
  • 4、后台发送请求参数的传递
  • 三、put请求
    • 1、基础类型参数
      • 2、实体作为参数
        • 3、数组作为参数
        • 四、delete请求
        • 五、总结
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档