.NET WebAPI post参数传递

可行的传参形式

  1. 键值对对应
  2. dynamic动态类型(非跨域)
  3. 实体类
  4. JObject参数(推荐)

1.键值对对应

这里所说的键值对并非是一般的键值对,是指键为空,值不为空的键值对
前台请求

$.ajax({
    url: host + '/api/Source/TestParams',
    type:"post",
    data: { '': "Amon"},
    success: function(a) {
        console.log(a);
    }
});

后台
这里写图片描述

可以看到后台是接收到参数了的,但是这种方式只能传一个键值对参数,{'': 'Amon', '': 'male'} 这种参数是接收不到的,当然也可以把所有参数序列化为字符串,后台再进行反序列化,但是这种方式较为繁琐,所以不推荐

2.dynamic 动态类型(非跨域)

这种传参方式在非跨域环境下可行,但是在跨域环境下,前台请求时会出现 405 错误,虽然通过调整ajax请求参数会解决这个错误,但是后台无法正常接收参数
前台请求

$.ajax({
    url: host + '/api/Source/TestParams',
    type:"post",
    contentType: 'application/json',
    data: JSON.stringify({ 'name': "Amon", sex: 'male'}),
    success: function(a) {
        console.log(a);
    }
});

后台
.NET WebAPI post参数传递_第1张图片

当前传参方式在非跨域环境中测试为可以正常传参,跨域环境暂未找到解决方法,如果有解决方法,欢迎交流

3.实体类

实体类是相对来说比较简单的一种传参方式,跟我们平常采用的传参方式相似
前台请求

$.ajax({
    url: host + '/api/Source/TestParams',
    type:"post",
    data: { 'name': "Amon", sex: 'male'},
    success: function(a) {
        console.log(a);
    }
});

后台
.NET WebAPI post参数传递_第2张图片
.NET WebAPI post参数传递_第3张图片
这种传参方式需要声明一个实体类,所以说在改变传参时,相应的要去更改实体类,灵活性不是很高

4.JObject 参数(推荐)

JObject传参方式是个人比较推荐的一种方式,前台请求传参写法不具迷惑性,后台接收也较为灵活
前台请求

$.ajax({
    url: host + '/api/Source/TestParams',
    type:"post",
    data: { 'name': "Amon", sex: 'male'},
    success: function(a) {
        console.log(a);
    }
});

后台
.NET WebAPI post参数传递_第4张图片

如果有其他的传参方式,欢迎交流

你可能感兴趣的:(.NET,WebAPI)