.net webapi

.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

posted @ 2017-08-30 18:03  水手哥  阅读(309)  评论(0编辑  收藏  举报