asp.net webapi初探(一)

mac2022-06-30  26

本人对webapi尚没有深入研究,初次接触发现了在数据请求时的几点现象。

先切入代码

1.如果action中开头带有Get默认就是get方式,不带Get默认就是post方式

public string GetUsers0(string id) { List<UserProfile> list = UserProfileBiz.GetBatchTest() as List<UserProfile>; //返回json字符串 return JsonConvert.SerializeObject(list); } $(function () { $.ajax({ url: "http://localhost:6556/api/User/GetUsers0", type: "get", dataType: "json", data: {"ID":"1"}, beforeSend: function (XMLHttpRequest) { }, success: function (data, status) { $(data).each(function () { alert(this.UserName); }); }, complete: function (data, status) { }, error: function () { } }); });

get方式可以请求到值,ID得大小写问题可以忽略,但是如果改成post方式,当然就请求不到了

如果改成post方式请求

就必须

[HttpPost] public string GetUsers0([FromBody]string id) { List<UserProfile> list = UserProfileBiz.GetBatchTest() as List<UserProfile>; //返回json字符串 return JsonConvert.SerializeObject(list); }

 

现在讲action改成任意不带Get开头的,然后用get方式请求发现请求不到,这是因为action默认已变成post请求的方式,改成post后,没有问题

public string MyUsers0([FromBody]string id) { List<UserProfile> list = UserProfileBiz.GetBatchTest() as List<UserProfile>; //返回json字符串 return JsonConvert.SerializeObject(list); } $.ajax({ url: "http://localhost:6556/api/User/MyUsers0", type: "post", dataType: "json", data: {"ID":"1"}, beforeSend: function (XMLHttpRequest) { }, success: function (data, status) { $(data).each(function () { alert(this.UserName); }); }, complete: function (data, status) { }, error: function () { } });

 

但是依旧需要一个FromBody特性声明,针对非对象类型的传值方式

 

如果改成实体参数会是什么情况呢

public string MyUsers0(UserProfile user) { List<UserProfile> list = UserProfileBiz.GetBatchTest() as List<UserProfile>; //返回json字符串 return JsonConvert.SerializeObject(list); }

 

对于实体类型参数并不需要声明FromBody特性了。

至于为什么需要继续探究。

 

转载于:https://www.cnblogs.com/njcxwz/p/5461197.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)