总结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一样

最新文章

  1. 一些有趣的Javascript技巧
  2. [译]Spring构建微服务
  3. css 温故而知新 slideDown/slideUp 新思路
  4. nginx 配置rewrite 笔记
  5. 决策树ID3算法示例
  6. label标签的用法
  7. jmeter测试手机app
  8. Messages.pas里的消息
  9. Mysql binlog日志解析
  10. select可选择、同时可自行输入
  11. Pandas常用函数入门
  12. 吴恩达深度学习笔记(deeplearning.ai)之卷积神经网络(一)
  13. Spring Aop底层原理详解
  14. pgrep
  15. JS事件(一)事件流&事件处理程序
  16. Java Web之Web组件之间的跳转方式
  17. Clairewd’s message ekmp
  18. jQuery validator plugin之Validator
  19. scrapy系列(四)——CrawlSpider解析
  20. Rime输入法的配色方案

热门文章

  1. 开发环境部署git 步骤
  2. 九度OJ 1014:排名 (排序)
  3. 详解Vue 实例中的生命周期钩子
  4. python自动化运维六:paramiko
  5. (转).NET基础拾遗(5)多线程开发基础
  6. CUDA: 常量内存与事件
  7. Qt & MySQL
  8. web项目中从不同的路径读取文件
  9. MVC+Ext.net零基础学习记录(一)
  10. golang字符串拼接性能对比