.net webapi相关
接口传参
- GET方式
基础类型参数:参数名称与前端JSON key相同即可;
复杂类型参数:参数类型加[FromUri],通过URL参数匹配方法参数;(或通过序列化字符串进行传递,接收后反序列化)
数组:get参数传递数量限制1024字节,实际使用无此场景;
[HttpGet] public string GetAllChargingData([FromUri]TB_CHARGING obj) { return "ChargingData" + obj.ID; }
- POST方式
基础类型参数:前端JSON key匹配后端参数名称;(需要测试,通过[FromBody]特性标识参数呢?)
复杂类型参数:前端JSON结构匹配后端复杂参数类型(key - 属性一一匹配),前端传递时需要注意contentType(不用application/json 用默认的application/x-www-form-urlencoded方式?);
数组:见下图代码。
[HttpPost] public object SaveData(dynamic obj) { var strName = Convert.ToString(obj.NAME); return strName; }
//数组传递:客户端 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; }
//客户端:实体数组传递 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; }
接口返回值
webapi返回值4种类型:
- void无返回值
- IHttpActionResult
- HttpResponseMessage
- 自定义类型
分别说:
- void 无返回值
使用void申明的方法,多用于put、delete操作; 在success方法里面得不到返回值,并且会返回http状态码204,告诉客户端此请求没有返回值。 - IHttpActionResult
return Json<T>(T content); //返回JSON格式;
return ok(); //如果返回Ok(),就表示不向客户端返回任何信息,只告诉客户端请求成功。
reutrn ok<T>(T content); //
return NotFound(); //NotFound()方法会返回一个404的错误到客户端。
reutrn Content<T>(HttpStatusCode statusCode, T value) //向客户端返回状态和值;
return BadRequest() //向客户端反馈400错误;
return Redirect(string location) ; //将客户端请求重定向其它URL;
//客户端 $(function () { $.ajax({ type: 'get', url: 'http://localhost:21528/api/Order/GetOrder', data: {}, success: function (data, status) { alert(data); } }); }); //服务端 [HttpGet] public IHttpActionResult GetOrder() { var lstRes = new List<ORDER>(); //实际项目中,通过后台取到集合赋值给lstRes变量。这里只是测试。 lstRes.Add(new ORDER() { ID = "aaaa", NO = "111", NAME = "111", DESC = "1111" }); lstRes.Add(new ORDER() { ID = "bbbb", NO = "222", NAME = "222", DESC = "2222" }); return Json<List<ORDER>>(lstRes); }
//返回匿名类型 [HttpGet] public IHttpActionResult GetOrder() { return Json<dynamic>(new { AA = "", BB = "cc" }); }
异常处理解决方案
- 异常筛选器
- HttpResponseException
- HttpError
参考:http://www.cnblogs.com/landeanfen/p/5363846.html
身份认证解决方案
跨域问题解决方案
接口测试工具
参考
【1】webapi传参:http://www.cnblogs.com/landeanfen/p/5337072.html
【2】webapi返回值:http://www.cnblogs.com/landeanfen/p/5501487.html, http://www.cnblogs.com/TianFang/p/3707796.html
推荐系列文章:http://www.cnblogs.com/TianFang/p/3704221.html