zoukankan      html  css  js  c++  java
  • 注释玩转webapi

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Net.Http.Formatting;
     4 using System.Web.Http;
     5 
     6 namespace MvcTest
     7 {
     8     public static class WebApiConfig
     9     {
    10         public static void Register(HttpConfiguration config)
    11         {
    12             //定义路由以支持action
    13             //实际开发建议使用此方式
    14             config.Routes.MapHttpRoute(
    15                 name: "ActionApi",
    16                 routeTemplate: "api3/{controller}/{action}/{key}",
    17                 defaults: new { key = RouteParameter.Optional }
    18             );
    19 
    20 
    21             //自定义路由,指定默认参数为key
    22             //http://localhost:21931/api2/myapi
    23             config.Routes.MapHttpRoute(
    24                 name: "MyApi",
    25                 routeTemplate: "api2/{controller}/{key}",
    26                 defaults: new { key = RouteParameter.Optional }
    27             );
    28 
    29             config.Routes.MapHttpRoute(
    30                 name: "DefaultApi",
    31                 routeTemplate: "api/{controller}/{id}",
    32                 defaults: new { id = RouteParameter.Optional }
    33             );
    34             //请求时上送format指定响应的格式
    35             //demo:http://localhost:21931/api/myapi?format=json
    36             //如果不指定会以浏览器上送的accept来决定,因此在chrome下会返回xml,在ie下会返回json
    37             config.Formatters.JsonFormatter.AddQueryStringMapping("format", "json", "application/json");
    38             config.Formatters.XmlFormatter.AddQueryStringMapping("format", "xml", "application/xml");
    39         }
    40     }
    41 }
      1 using System;
      2 using System.Collections.Generic;
      3 using System.Net;
      4 using System.Net.Http;
      5 using System.Web;
      6 using System.Web.Http;
      7 
      8 namespace MvcTest.Controllers
      9 {
     10     public class MyApiController : ApiController
     11     {
     12         //默认参数为id,务必与路由里的一致,否则会出现404的错误
     13         // GET api/myapi
     14         public IEnumerable<string> Get()
     15         {
     16             return new string[] { "value1", "value2" };
     17         }
     18 
     19         //返回一个对象
     20         //api/myapi/111?format=json返回为json
     21         //api/myapi/111?format=xml返回为xml
     22         //实现原理参见WebApiConfig配置
     23         public User Get(int id)
     24         {
     25             return new User { Name = "AA", Age = id };
     26         }
     27 
     28         //请求方式/api/myapi/?name=wjf&count=111
     29         public List<User> Get(string name, int count)
     30         {
     31             var list = new List<User>();
     32             for (int i = 0; i < count; i++)
     33             {
     34                 list.Add(new User { Name = name, Age = count * 2 });
     35             }
     36             return list;
     37         }
     38 
     39         //感受一下webapi的重载
     40         public String Post()
     41         {
     42             return "aa";
     43         }
     44 
     45         //感受一下webapi的重载
     46         public string Post(string id)
     47         {
     48             return "post接收到数据:" + id;
     49         }
     50 
     51 
     52         //感受一下webapi的重载
     53         //此方法不能与post()共存,这样会导致不知道怎么映射要解决此问题可以通过自定义方法实现
     54         //public string Post(User u)
     55         //{
     56         //    if (u == null)
     57         //        return "无数据";
     58         //    return "post接收到数据:" + u.ToString();
     59         //}
     60 
     61 
     62         //WEBAPI中的Request是HttpRequestMessage类型,
     63         //当参数的名称与路由的名称不一致时,要接收只能通过HttpContext.Current.Request[key]
     64         // POST api/myapi
     65         //public string Post([FromBody]string value)
     66         //{
     67         //    var a = HttpContext.Current.Request["value"];
     68         //    if (!string.IsNullOrWhiteSpace(a))
     69         //        return a;
     70         //    return "post" + value;
     71         //}
     72 
     73 
     74         //参数默认是FormUri
     75         // PUT api/myapi/5
     76         public string Put([FromBody]string id)
     77         {
     78             return "put" + id;
     79         }
     80 
     81         // DELETE api/myapi/5
     82         public string Delete(string id)
     83         {
     84             return "Delete" + id;
     85         }
     86 
     87         //方法不够时可以自己定义方法,一般不推荐此方法
     88         [AcceptVerbs("MY", "HEAD")]
     89         public string My([FromBody]string id)
     90         {
     91             return "My" + id;
     92         }
     93 
     94         //自定义方法
     95         //注意参数是key哦
     96         //查看路由发指定默认参数是key
     97         [AcceptVerbs("MYROUTE", "HEAD")]
     98         public string MyRoute([FromBody]string key)
     99         {
    100             return "MYROUTE" + key;
    101         }
    102 
    103 
    104         //调用此方法通过http://localhost:21931/api3/myapi/GetAll,需要先配置好路由
    105         //此方法与post()共存时会有问题,路由不知道如何映射        
    106         //public string MyAll()
    107         //{
    108         //    return "aaaaaaaaaaaaaaaaaaaaa";
    109         //}
    110 
    111     }
    112 
    113     public class User
    114     {
    115         public String Name { get; set; }
    116         public int Age { get; set; }
    117         public override string ToString()
    118         {
    119             return string.Format("name:{0},age:{1}", Name, Age);
    120         }
    121     }
    122 }
      1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      2 <html xmlns="http://www.w3.org/1999/xhtml">
      3 <head>
      4     <title></title>
      5     <script src="js/jquery.js" type="text/javascript"></script>
      6     <script type="text/javascript">
      7         $(function () {
      8             $("#btn").click(function () {
      9                 //                //get请求
     10                 //                $.ajax({
     11                 //                    type: 'GET',
     12                 //                    url: 'api/myapi/123',
     13                 //                    success: function (data) {
     14                 //                        jalert(data);
     15                 //                    },
     16                 //                    error: function (xmlHttpRequest, textStatus, errorThrown) {
     17                 //                        jalert(11);
     18                 //                    }
     19                 //                });
     20 
     21                 //调用无参数的post请求
     22                 //                $.ajax({
     23                 //                    type: 'POST',
     24                 //                    url: 'api/myapi',
     25                 //                    success: function (data) {
     26                 //                        jalert(data);
     27                 //                    },
     28                 //                    error: function (xmlHttpRequest, textStatus, errorThrown) {
     29                 //                        jalert("调用失败");
     30                 //                    }
     31                 //                });
     32 
     33                 //                $.ajax({
     34                 //                    type: 'POST',
     35                 //                    url: 'api/myapi',
     36                 //                    data: { Name: 'wjf', Age: 123 },
     37                 //                    dataType: 'json',
     38                 //                    success: function (data) {
     39                 //                        jalert(data);
     40                 //                    },
     41                 //                    error: function (xmlHttpRequest, textStatus, errorThrown) {
     42                 //                        jalert(11);
     43                 //                    }
     44                 //                });
     45 
     46                 //                $.ajax({
     47                 //                    type: 'PUT',
     48                 //                    url: 'api/myapi',
     49                 //                    data: { '': '11111' },
     50                 //                    dataType: 'json',
     51                 //                    success: function (data) {
     52                 //                        jalert(data);
     53                 //                    },
     54                 //                    error: function (xmlHttpRequest, textStatus, errorThrown) {
     55                 //                        jalert("调用失败");
     56                 //                    }
     57                 //                });
     58 
     59                 //                $.ajax({
     60                 //                    type: 'Delete',
     61                 //                    url: 'api/myapi/11111111',
     62                 //                    success: function (data) {
     63                 //                        jalert(data);
     64                 //                    },
     65                 //                    error: function (xmlHttpRequest, textStatus, errorThrown) {
     66                 //                        jalert("调用失败");
     67                 //                    }
     68                 //                });
     69 
     70                 //调用自己定义的方法
     71                 //                $.ajax({
     72                 //                    type: 'MY',
     73                 //                    url: 'api/myapi/我是URL参数',
     74                 //                    success: function (data) {
     75                 //                        jalert(data);
     76                 //                    },
     77                 //                    error: function (xmlHttpRequest, textStatus, errorThrown) {
     78                 //                        jalert("调用失败");
     79                 //                    }
     80                 //                });
     81 
     82                 //调用自己定义的方法
     83                 //                $.ajax({
     84                 //                    type: 'MY',
     85                 //                    url: 'api/myapi',
     86                 //                    data: { '': '我是json传的值' },//如果要传多个值,是不支持这种写法的(formbody只支持一个修饰),需要定义一个对象对接收
     87                 //                    dataType: 'json',
     88                 //                    success: function (data) {
     89                 //                        jalert(data);
     90                 //                    },
     91                 //                    error: function (xmlHttpRequest, textStatus, errorThrown) {
     92                 //                        jalert("调用失败");
     93                 //                    }
     94                 //                });
     95 
     96 
     97                 //                $.ajax({
     98                 //                    type: 'MYROUTE',
     99                 //                    url: 'api2/myapi',
    100                 //                    data: { '': '我是json传的值' }, //如果要传多个值,是不支持这种写法的(formbody只支持一个修饰),需要定义一个对象对接收
    101                 //                    dataType: 'json',
    102                 //                    success: function (data) {
    103                 //                        jalert(data);
    104                 //                    },
    105                 //                    error: function (xmlHttpRequest, textStatus, errorThrown) {
    106                 //                        jalert("调用失败");
    107                 //                    }
    108                 //                });
    109 
    110             });
    111         });
    112         function jalert(msg) {
    113             $("#msg").html(msg);
    114         }
    115     </script>
    116 </head>
    117 <body>
    118     <input type="button" value="测试" id="btn" />
    119     <span id="msg"></span>
    120 </body>
    121 </html>

    有追求,才有动力!

    向每一个软件工程师致敬!

    by wujf

    mail:921252375@qq.com

  • 相关阅读:
    c# 命令行下编译c#文件 // c# file类读写文件
    C#读取Xml
    System.IO.Path
    System.IO.Path 操作
    关于C#操作INI文件的总结
    C# 文件的一些基本操作(转)//用C#读写ini配置文件
    使用匿名类型做为ComboBox的DataSource
    C# Path 有关于文件路径等问题类(转)
    自考新教材--p60_5_2
    自考新教材--p60_5_1
  • 原文地址:https://www.cnblogs.com/wujf/p/5118434.html
Copyright © 2011-2022 走看看