WebApi接口传参不再困惑(4):传参详解(下)

发布时间:2018-10-03 08:25:35

WebApi接口传参不再困惑(4):传参详解(下)

3、数组作为参数

(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 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[] byte = Encoding.UTF8.GetBytes(postData); //设置request的MIME类型及内容长度 request.ContentType = 'application/json'; request.ContentLength = byte.Length; //打开request字符流 Stream dataStream = request.GetRequestStream(); dataStream.Write(byte, 0, byte.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 lstChargin) { return true; }五、总结

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

WebAPI系列文章:

《WebApi身份认证解决方案(1):Basic基础认证(上)》

《WebApi身份认证解决方案(1):Basic基础认证(下)》

《WebApi接口测试工具(2):WebApiTestClient》《WebApi跨域解决方案(3):跨域资源共享》

WebApi接口传参不再困惑(4):传参详解(下)

相关推荐