WebAPI GET和POST请求的几种方式
2018-03-09 18:32
555 查看
GET请求1.无参数get请求 一般get请求有两种写法,一种是$.get() 一种是$.ajax({type:"get"}),我个人比较喜欢用后者。下面例子主要是get无参数请求,获取人员列表并将数据返回到前台,并将返回的json数据转换成字符串弹出,以便知道是否请求成功,并且返回的数据是否正确
后台代码
2.多个参数的Get请求,参数格式:data:{},例如 一个参数的get请求是data:{"Name":"张丽"},两个参数:data:{"Name":"张丽","Sex":"女"},多个参数只是在{}里加入多个参数而已。
后台代码
最终效果 POST请求1.无参数的POST请求 无参数的POST请求和GET请求是一样的,只不过是ajax里的type:"get"改成type:"post"而已,后台函数要加 [HttpPost]标签,主要是标记该函数是post请求函数,如果get请求是请求不进去该函数的。2.一个参数的POST请求 一个参数的post请求和GET请求的方式不一样,后台函数的参数必须用[FromBody]标记,这样才能访问到该函数,如果不加[FromBody] , ASP.NET Web API能够正确的识别我们的UserController控制器处理Post /api/Person ,但却不能找到一个可以接受的方法来处理请求。那么有人就说了后台参数加了[FromBody] ,js如下是不是就可以请求成功哪
答案是失败的,确切的说是可以访问到PersonControler里的Post_Person方法的,但是Post_Person函数的参数是获取不到前台ajax传递过来的值得,为什么呢?是因为Web API 要求请求传递的 [FromBody] 参数,是有一个特定的格式,才能被正确的获取到。而这种特定的格式并不是我们常见的 key=value 的键值对形式。Web API 的模型绑定器希望找到 [FromBody] 里没有键名的值,也就是说, 不是 key=value ,而是 =value 。所以将data:{"Name":"张丽"}改成data:{"":"张丽"} 这样后台函数才可以正确接收到传递过来的参数值3.多个参数的POST请求 有人会认为多个参数的Post请求,就是后台函数加多个带[FromBody]标记的参数即可,如果你是这样想的,那么你错了。请一定要记住多个参数POST请求,[FromBody] 修饰的参数只能有一个 。我们需要对传递的多个参数进行封装才行。
后台代码
https://www.cnblogs.com/liuchunhe/p/4378479.html
1 $.ajax({ 2 url: "/api/Person/getList", 3 type: "get", 4 success: function (data) { 5 alert(JSON.stringify(data)); 6 alert("成功"); 7 }, 8 error: function () { 9 alert("错误"); 10 } 11 });
后台代码
1 public class PersonController : ApiController 2 { 3 4 public List<Person> getList() 5 { 6 var PersonList = new List<Person>(){ 7 new Person{Name="张和",Sex="男",Duty="工程师",CompanyName="北京XX科技有限公司"}, 8 new Person{Name="张丽",Sex="女",Duty="工程师",CompanyName="北京XX科技有限公司"}, 9 new Person{Name="张春雷",Sex="男",Duty="工程师",CompanyName="北京XX科技有限公司"} 10 }; 11 return PersonList; 12 } 13 }
2.多个参数的Get请求,参数格式:data:{},例如 一个参数的get请求是data:{"Name":"张丽"},两个参数:data:{"Name":"张丽","Sex":"女"},多个参数只是在{}里加入多个参数而已。
1 $.ajax({ 2 url: "/api/Person/GetPerson", 3 type: "get", 4 data:{"Name":"张丽","Sex":"女"}, 5 success: function (data) { 6 alert(data.Name+" "+data.Duty+" "+data.CompanyName); 7 }, 8 error: function () { 9 alert("错误"); 10 } 11 });
后台代码
1 public Person GetPerson(string Name,string Sex) 2 { 3 var PersonList = new List<Person>(){ 4 new Person{Name="张和",Sex="男",Duty="工程师",CompanyName="北京XX科技有限公司"}, 5 new Person{Name="张丽",Sex="女",Duty="工程师",CompanyName="北京XX科技有限公司"}, 6 new Person{Name="张春雷",Sex="男",Duty="工程师",CompanyName="北京XX科技有限公司"} 7 }; 8 var p = PersonList.FirstOrDefault(f => f.Name == Name&&f.Sex==Sex); 9 return p; 10 }
最终效果 POST请求1.无参数的POST请求 无参数的POST请求和GET请求是一样的,只不过是ajax里的type:"get"改成type:"post"而已,后台函数要加 [HttpPost]标签,主要是标记该函数是post请求函数,如果get请求是请求不进去该函数的。2.一个参数的POST请求 一个参数的post请求和GET请求的方式不一样,后台函数的参数必须用[FromBody]标记,这样才能访问到该函数,如果不加[FromBody] , ASP.NET Web API能够正确的识别我们的UserController控制器处理Post /api/Person ,但却不能找到一个可以接受的方法来处理请求。那么有人就说了后台参数加了[FromBody] ,js如下是不是就可以请求成功哪
1 $.ajax({ 2 url: "/api/Person/Post_Person", 3 type: "post", 4 data:{"Name":"张丽"}, 5 success: function (data) { 6 alert("成功"); 7 alert(data); 8 alert(data.Name + " " + data.CompanyName); 9 }, 10 error: function () { 11 alert("错误"); 12 } 13 });
答案是失败的,确切的说是可以访问到PersonControler里的Post_Person方法的,但是Post_Person函数的参数是获取不到前台ajax传递过来的值得,为什么呢?是因为Web API 要求请求传递的 [FromBody] 参数,是有一个特定的格式,才能被正确的获取到。而这种特定的格式并不是我们常见的 key=value 的键值对形式。Web API 的模型绑定器希望找到 [FromBody] 里没有键名的值,也就是说, 不是 key=value ,而是 =value 。所以将data:{"Name":"张丽"}改成data:{"":"张丽"} 这样后台函数才可以正确接收到传递过来的参数值3.多个参数的POST请求 有人会认为多个参数的Post请求,就是后台函数加多个带[FromBody]标记的参数即可,如果你是这样想的,那么你错了。请一定要记住多个参数POST请求,[FromBody] 修饰的参数只能有一个 。我们需要对传递的多个参数进行封装才行。
1 var Person = { 2 Name: "张丽", 3 Sex: "女", 4 Duty: "ddd", 5 } 6 7 $.ajax({ 8 url: "/api/Person/Post_PersonObj", 9 type: "post", 10 data: Person, 11 success: function (data) { 12 alert("成功"); 13 alert(data); 14 alert(data.Name + " " + data.CompanyName); 15 }, 16 error: function (data) { 17 alert(data.responseText); 18 } 19 });
后台代码
1 [HttpPost] 2 public Person Post_PersonObj([FromBody]Person per) 3 { 4 var PersonList = new List<Person>(){ 5 new Person{Name="张和",Sex="男",Duty="工程师",CompanyName="北京XX科技有限公司"}, 6 new Person{Name="张丽",Sex="女",Duty="工程师",CompanyName="北京XX科技有限公司"}, 7 new Person{Name="张春雷",Sex="男",Duty="工程师",CompanyName="北京XX科技有限公司"} 8 }; 9 var p = PersonList.FirstOrDefault(f => f.Name == per.Name&&f.Sex==per.Sex); 10 return p; 11 } 整个例子的源代码下载地址:http://pan.baidu.com/s/1mgooA8K
https://www.cnblogs.com/liuchunhe/p/4378479.html
相关文章推荐
- WebAPI GET和POST请求的几种方式
- WebAPI GET和POST请求的几种方式
- Spring RestTemplate中几种常见的请求方式GET请求 POST请求 PUT请求 DELETE请求
- http协议中的几种请求的方式(Get、Post、Put、Head、Delete、Options、Trace和Connect)
- nodejs之get/post请求的几种方式小结
- nodejs之get/post请求的几种方式
- 写接口请求类型为get或post的时,参数定义的几种方式,如何用注解(原创)--雷锋
- nodejs之get/post请求的几种方式
- Android Volley框架的几种post提交请求方式和探究POST、GET提交
- WEB API 中HTTP的get、post、put,delete 请求方式
- Jersey使用总结一(jersey初步使用和简单post请求几种参数传递,String方式,不含对象操作)
- PHP:CURL分别以GET、POST方式请求HTTPS协议接口api
- Ajax的请求方式GET/POST区别
- post和get请求方式以及区别
- 前端发送get和post请求的三种方式
- 通过AsyncTask实现网络请求的方式,get和post
- Jquery Ajax请求WebApi(Post请求方式)
- JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求