博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
以Web Host的方式来寄宿Web API
阅读量:7103 次
发布时间:2019-06-28

本文共 3789 字,大约阅读时间需要 12 分钟。

一、新建一个Common的类库项目并新建一个测试用的Contact实体类

1 namespace Common 2 { 3     public class Contact 4     { 5         public string Id { get; set; } 6         public string Name { get; set; } 7         public string PhoneNum { get; set; } 8         public string EmailAddress { get; set; } 9         public string Address { get; set; }10     }11 }

 二、新建一个WebApi的类库项目并新建一个测试用的ContactsController类

表现为HttpController 的Web AP1定义在WebApi项目之中,我们一般将ApiController作为继承的基类。ApiControIIcr定义在

“system.Web Httpd1” 程序集中,我们可以在目录“%ProgramFiles%Microsoft ASP.NET\ASP.NET Web Stack 5\Packages” 中找到这个程序集。
具体来说,该程序集存在于子目录“Microsoft.AspNet.WebApi.Core.5.0.0\lib\net45” 中。

Web API体现在如下所示的ContactsController类型中。在该类型中,我们定义了Get、Post、Put和Delete这4个Action方法,它们分别实现了针对联系人的查询、添加、修改和删除操作。Action方法Get具有一个表示联系人ID的可缺省参数,如果该参数存在则返回对应的联系人,否则返回整个联系人列表。由于ASP.NET Web API默认实现了Action方法与HTTP方法的映射,所以方法名也体现了它们各自所能处理的请求必须采用的HTTP方法。

1 using System.Collections.Generic; 2 using System.Linq; 3 using System.Web.Http; 4 using Common; 5  6 namespace WebApi 7 { 8     public class ContactsController : ApiController 9     {10         private static readonly List
Contacts;11 12 static ContactsController()13 {14 Contacts = new List
15 {16 new Contact17 {18 Id = "001",19 Name = "张三",20 PhoneNum = "12345678",21 EmailAddress = "zhangsan@gmail.com",22 Address = "add1"23 },24 new Contact25 {26 Id = "002",27 Name = "李四",28 PhoneNum = "23456789",29 EmailAddress = "lisi@gmail.com",30 Address = "add2"31 }32 };33 }34 35 public IEnumerable
Get(string id = null)36 {37 return from contact in Contacts where contact.Id == id || string.IsNullOrWhiteSpace(id) select contact;38 }39 40 public void Post(Contact contact)41 {42 Contacts.Add(contact);43 }44 45 public void Put(Contact contact)46 {47 Contacts.Remove(Contacts.First(c => c.Id == contact.Id));48 Contacts.Add(contact);49 }50 51 public void Delete(string id)52 {53 Contacts.Remove(Contacts.First(c => c.Id == id));54 }55 }56 }

 三,新建一个ASP.NET Web项目并修改Global.asax.cs文件

除了在Application_Start中加入路由配置外,还需要在此项目中引用之前创建的WebApi项目

1 using System; 2 using System.Web; 3 using System.Web.Http; 4 using System.Web.Routing; 5  6 namespace WebHost 7 { 8     public class Global : HttpApplication 9     {10         protected void Application_Start(object sender, EventArgs e)11         {12             RouteTable.Routes.Ignore("{resource}.axd/{*pathInfo}");13 14             // 全局路由表HttpRouteCollection对象的扩展方法MapHttpRoute来完成15             GlobalConfiguration.Configuration.Routes.MapHttpRoute("defaultApi", "api/{controller}/{id}", new {id = RouteParameter.Optional});16         }17     }18 }

四,测试

用Chrome默认一application/xml的Content-Type返回,IE则默认以application/json的Content-Type返回;

我这边用Chrome测试的返回结果:

请求URL:http://localhost/webhost/api/contacts

add1
zhangsan@gmail.com
001
张三
12345678
add2
lisi@gmail.com
002
李四
23456789

请求URL:http://localhost/webhost/api/contacts/001

add1
zhangsan@gmail.com
001
张三
12345678

  

转载地址:http://ordhl.baihongyu.com/

你可能感兴趣的文章
IE6 — 你若安好,便是晴天霹雳 [ 乱弹 ]
查看>>
组合数学 - 母函数的运用 --- 模板题
查看>>
检测MYSQL不同步发邮件通知的脚本
查看>>
Struts2学习笔记1
查看>>
python的ftp上传和下载
查看>>
ASP.NET MVC 中的路由
查看>>
微信公众平台帐号通过昵称无法搜索到怎么办
查看>>
Oracle笔记 六、PL/SQL简单语句块、变量定义
查看>>
Linux 常用命令
查看>>
何为蠕虫病毒
查看>>
[詹兴致矩阵论习题参考解答]习题7.3
查看>>
【BZOJ】1046: [HAOI2007]上升序列(dp)
查看>>
罗兰管弦乐音色表【中英文对照】 ----转载
查看>>
java操作数据库出现(][SQLServer 2000 Driver for JDBC]Error establishing socket.)的问题所在即解决办法...
查看>>
【LeetCode】102. Binary Tree Level Order Traversal (2 solutions)
查看>>
Uart串口与RS232串口的区别
查看>>
【LeetCode】94. Binary Tree Inorder Traversal (3 solutions)
查看>>
(转)闪电效果的实现,中点位移法
查看>>
定义数组类型
查看>>
Java实现串口通信的小样例
查看>>