参数传递
Get 请求传递参数问题总结:
1.使用get请求只会通过url传递参数,本质是url字符串拼接,url字符串长度受限制
2.不使用实体参数,后台方法定义了参数,而请求中缺少参数则匹配不成功;
3.使用实体参数时需要[FromUri] 属性,实体参数中的字段,请求中参数可以不传递;接口方法中其他参数必需传递
4.可以同时使用多个实体参数,参数中字段名相同则都赋值Url同名参数
5.Get类型的方法命名,应尽量采用“Get+方法名”的命名方式,且习惯性地在方法前加上[HttpGet特性];接口方法名不以Get开头,必须添加[HttpGet]属性才能匹配成功。
Post请求传递参数问题总结:
1.单个参数(如一个string参数)需要使用[FromBody]属性,不使用会出现404 ;
jquery Post 参数形式为{ '': 'adc' } 接受参数成功,而微信小程序同样方式方法接收不到参数。
接口方法中一个参数,jqPost 参数为{‘’:‘abc’,'':'bcd'} (参数名相同了)而查看HTTP请求发现只会传递后一个,接收到参数就为后一个。
2.使用dynamic 类型参数 jqPost 参数为 {"key1":"abc","key2":"bcd"} 接口方法使用[FromBody] 和dynamic关键字,不使用[FromBody]也可以成功传递,为了规范最好标明
3.使用实体参数 jqPost 参数为 {"key1":"abc","key2":"bcd"} 接口方法使用[FromBody]
4. 集合参数 jq Post 参数
var Param=[
{ "key1": "abc", "key2": "bcd" },
{ "key1": "abc", "key2": "bcd" },
{ "key1": "abc", "key2": "bcd" }
];
data:Param,
接口方法参数为Ilist<>类型参数,省略[FromBody]参数可以接收成功
5.数组参数
jq Post 参数var Param = ["1", "2", "3"];
data:Param,
接口方法参数为string[] arr ,省略[FromBody]参数可以接收成功
5.Post 请求通过请求体传递参数,相对get请求安全;post没有参数长度限制,get请求url有限制(一般1024b)
规范:对于控制器方法,尽量参照规范格式写,如在相应控制器方法上加上对应的htt请求(Get对应[HttpGet],Post对应[HttpPost]),方法名尽量采用“Http请类型+方法名”格式(如Get请求,建议采用Get+MethodName;Post请求对应Post+MethodName);