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

时间:2022-05-07
本文章向大家介绍C#进阶系列——WebApi 接口参数不再困惑:传参详解 下,主要内容包括4、后台发送请求参数的传递、三、put请求、2、实体作为参数、3、数组作为参数、四、delete请求、五、总结、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

(1)基础类型数组

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) { }
    });
        [HttpPost]        public bool SaveData(string[] ids)
        {            return true;
        }

得到结果:

(2)实体集合

    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) {}
    });
        [HttpPost]        public bool SaveData(List<TB_CHARGING> lstCharging)
        {            return true;
        }

得到结果:

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

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

    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、基础类型参数

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

2、实体作为参数

和post请求相同。

3、数组作为参数

和post请求相同。

四、delete请求

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

    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) {}
    });
        [HttpDelete]        public bool OptDelete(List<TB_CHARGING> lstChargin)
        {            return true;
        }

五、总结

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