WebApi笔记

WebApi有一段时间没用了,这几天用webapi做了一个接口供第三方调用,又重新折腾了下,做个笔记记录下心得,防止遗忘。

1、webapi使用的RESTful风格的传参方式,其实就是充分利用HTTP请求的格式来完成参数的传递。HTTP请求除了常用的get、post请求方式外,还有put、patch、delete请求方式。

2、后台对应的限制传参特性标签有[HttpGet]、[HttpPost]、[HttpPut]、[HttpPatch]、[HttpDelete]。

3、在给方法起名字的时候,方法名称前面最好加上对应的请求方式,比如Get***、Post***、Put***、Delete***。这样即使不使用特性标签,请求也能根据webapi的路由机制自动匹配对应的方法。

4、HttpPatch在webapi中是部分更新的意思,但要注意,由于MVC的模型绑定功能,在进行部分传参的时候,会把未进行需要传参的参数重装为null。例如:只修改Name,则使用HttpPatch的时候,会把Email的值改成null。所以,在使用HttpPatch的时候,这一点需要特别注意。

5、如果不想使用[FromBody]这样的形式传参,可以使用dynamic定义参数。在这样进行操作时候,前端传递的参数必须是json的形式,而且要添加contentType:'application/json'参数。具体使用方式请参考put传参的代码。

 View:

 1 <html>
 2 <head>
 3     <meta name="viewport" content="width=device-width" />
 4     <title>Index</title>
 5     <script src="~/Scripts/jquery-1.10.2.min.js"></script>
 6     <script>
 7         $(function () {
 8             $('#btn_get').click(function () {
 9                 $.ajax({
10                     url: '/api/WebApiDemo',
11                     type: 'get',
12                     data: { Id: 1, Name: '卡卡西', Email: 'kkx@163.com' },
13                     success: function (data) {
14                         alert('get请求');
15                     }
16                 });
17             });
18 
19             $('#btn_post').click(function () {
20                 $.ajax({
21                     url: '/api/WebApiDemo',
22                     type: 'post',
23                     data: { Id: 1, Name: '卡卡西', Email: 'kkx@163.com' },
24                     success: function (data) {
25                         alert('post请求');
26                     }
27                 });
28             });
29 
30             $('#btn_put').click(function () {
31                 $.ajax({
32                     url: '/api/WebApiDemo',
33                     type: 'put',
34                     contentType: 'application/json',
35                     data: JSON.stringify({ Id: 1, Name: '卡卡西', Email: 'kkx@163.com' }),
36                     success: function (data) {
37                         alert('put请求');
38                     }
39                 });
40             });
41             $('#btn_delete').click(function () {
42                 $.ajax({
43                     url: '/api/WebApiDemo',
44                     type: 'delete',
45                     data: { Id: 1, Name: '卡卡西', Email: 'kkx@163.com' },
46                     success: function (data) {
47                         alert('delete请求');
48                     }
49                 });
50             })
51 
52         });
53     </script>
54 </head>
55 <body>
56     <div>
57         <input type="button" id="btn_get" value="Get查询请求" />
58         <input type="button" id="btn_post" value="Post提交数据" />
59         <input type="button" id="btn_put" value="Put修改数据" />
60         <input type="button" id="btn_delete" value="Delete删除数据" />
61     </div>
62 </body>
63 </html>

Controller:

 1  [HttpGet]
 2         public string GetDemo([FromUri] Person person)
 3         {
 4             return "ok";
 5         }
 6         [HttpPost]
 7         public string PostDemo([FromBody] Person person)
 8         {
 9             return "ok";
10         }
11         [HttpPut]
12         public bool PutDemo(dynamic obj)
13         {
14             return true;
15         }
16          
17         [HttpDelete]
18         public bool DeleteDemo([FromBody] Person person)
19         {
20             return true;
21         }

运行截图:

Get传参:

Post传参:

Put传参:

Delete传参:

原文地址:https://www.cnblogs.com/sunice/p/6436009.html