zoukankan      html  css  js  c++  java
  • .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

  • 相关阅读:
    iphone在iframe页面的宽度不受父页面影响,避免撑开页面
    touch事件应用
    js获取手机屏幕宽度、高度
    css3特效样式库
    js基础:对DOM进行操作,删除、添加元素
    eval基础,基础用法及解析json
    ajax调用数据案例,二级联动
    (原)String类两种实例化的区别
    java订电影票系统
    多线程练习(java)
  • 原文地址:https://www.cnblogs.com/ybtools/p/7454627.html
Copyright © 2011-2022 走看看