来源:懒得安分
链接:http://www.cnblogs.com/landeanfen/p/5337072.html
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[] 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 lstChargin) { return true; }
五、总结
以上比较详细的总结了WebApi各种请求的各种参数传递。每种情况都是博主实际代码测试过的,内容不难,但如果刚接触这么些东西还是需要一点时间去熟悉的,在此做个总结,希望能帮到刚刚接触WebApi的园友们。
WebAPI系列文章:
|