zoukankan      html  css  js  c++  java
  • 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传参:

  • 相关阅读:
    Java 字符串判空
    JavaScript try catch 常用场景(一)
    IE console 未定义
    共享锁与排它锁
    js 原型链
    js的原型模式
    js中RegExp类型
    js中Array对象方法详解
    js动态生成input指定My97DatePicker时间问题
    利用spring、cxf编写并发布webservice
  • 原文地址:https://www.cnblogs.com/sunice/p/6436009.html
Copyright © 2011-2022 走看看