• web API请求与参数获取


    总结webAPI的常用请求方法与后台参数的获取:

    一:get请求:(会将所以参数拼接到URL里面)

    1:基础类型:string  a=“hello” , 前端无论你是写到ajax里面的data属性还是直接拼接到URL里面,后台直接string a获取;

    [HttpGet]

    public JObject AddUserInfo(string a)

    {.........}

    2:实体类型:(1)使用FromUri关键字:前端写到ajax里面的data属性里面提交,如data:{
          Id:"1",
          Name:"lsm",
          Old:"25",
        }

    后台采用实体接收,先定义实体,属性名称需要和前台传过来的属性名称一致,使用【FromUri】关键字接收,

    如模型定义为 public class UserModel
        {
            public string Id { get; set; }
            public string Name { get; set; }
            public string Old { get; set; }
        }

    接口写成:

    [HttpGet]

    public JObject AddUserInfo([FromUri]UserModel userInfo)

    {.........}

    (2)不使用FromUri关键字

    前台将对象序列化成字符串:data: { strQuery: JSON.stringify({Id:"1",
          Name:"lsm",
          Old:"25",})}

    后台采用字符串接收:参数名需和前台传过来的一致,并再序列化json对象

     接口写法 [HttpGet]

        public string GetByModel(string strQuery)
        {
           UserModel oData = Newtonsoft.Json.JsonConvert.DeserializeObject(strQuery);
           。。。。
        }
    3:若web API的接口方法名称以get开头的时候,可以省略[HttpGet]过滤
    二:post请求
    1:基础类型:data: { "": "Jim" },注意这里不能写key值,否则后台获取到的值将为空,后台使用[FromUri]关键字获取
    [HttpPost]
         public bool SaveData([FromBody]string NAME)
         {
            return true;
         }
    2:多个基础类型数据参数
    前台写法:
    data:{
          Id:"1",
          Name:"lsm",
          Old:"25",
        }
    后台取法:使用dynamic关键字
        [HttpPost]
        public object SaveData(dynamic obj)
        {
            var strName = Convert.ToString(obj.NAME);
            return strName;
        }
    3:单个实体类型:注意此时不能指定contentType为appplication/json,应当默认的application/x-www-form-urlencoded,否则将取不到数据
    前台写法
    data:{
          Id:"1",
          Name:"lsm",
          Old:"25",
        }
    后台直接由实体接收:
    [HttpPost]
       public bool SaveData(UserModel oData)
       {
           return true;
       }
    4:单个实体类型:前台指定contentType为appplication/json,必须将json对象序列化在传输
    前台写法
    postdata:{
          Id:"1",
          Name:"lsm",
          Old:"25",
        }
    data: JSON.stringify(postdata),
    后台直接由实体接收:
    [HttpPost]
       public bool SaveData(UserModel oData)
       {
           return true;
       }
     
    5:基础类型+实体:前台定contentType为appplication/json,后台使用dynamic关键字接收
    前台:
    postdata:{
          Id:"1",
          Name:"lsm",
          Old:"25",
        }
    data: JSON.stringify({NAME:"Lilei", Charging:postdata}),
    后台:
    [HttpPost]
         public object SaveData(dynamic obj)
         {
             var strName = Convert.ToString(obj.NAME);
             var oCharging = Newtonsoft.Json.JsonConvert.DeserializeObject(Convert.ToString(obj.Charging));
             return strName;
         }
    6:数组为参数:前台指定contentType为appplication/json
    前台:
    arr:["2","3","3","5"]
    data: JSON.stringify(arr),
    后台:
      [HttpPost]
        public bool SaveData(string[] ids)
        {
             return true;
        }
     
    7:实体集合:前台指定contentType为appplication/json
    前台
    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" }
        ];
     
    data: JSON.stringify(arr),
    后台:
     [HttpPost]
        public bool SaveData(List lstCharging)
        {
           return true;
        }
    三:put请求机制和post一样
    四:delete请求机制和post一样
  • 相关阅读:
    IIS6.0中,使用其它用户运行IIS
    c++构造函数详解
    Java创建文件夹及文件
    三大范式及存储方式
    对新型软件程序语言及架构的一点讨论
    C++虚函数解析
    验收测试驱动开发:ATDD实例详解
    什么是父路径及开启的方法
    note:全局配置visual studio 2010 头文件目录
    怎么把二级域名重定向到主域名
  • 原文地址:https://www.cnblogs.com/min-min-min/p/7325423.html
Copyright © 2020-2023  润新知