二、通过ASP.NET Web API提供服务
我们来简单介绍作为Web API形式发布的联系人管理服务的定义,先来看看用于表示联系人的Contact类型的定义。
- public class Contact
- {
- public string Id { get; set; }
- public string FirstName { get; set; }
- public string LastName { get; set; }
- public string PhoneNo { get; set; }
- public string EmailAddress { get; set; }
- }
“联系人服务”以具有如下定义的ContactController的形式定义,它是ApiController的子类。简单起见,我们采用静态字段作为对联系人信息的存储。ContactController定义了Get、Put、Post和Delete用于进行对联系人的获取、添加、修改和删除操作。我想对Web API不了解的人会感概,为了什么采用常用的四个HTTP方法作为操作的名称,因为它们在默认的情况下就可以映射为HTTP请求的方法。
- public class ContactController : ApiController
- {
- private static List<Contact> contacts = new List<Contact>
- {
- new Contact{ Id="001", FirstName = "San", LastName="Zhang", PhoneNo="123", EmailAddress="zhangsan@gmail.com"},
- new Contact{ Id="002",FirstName = "Si", LastName="Li", PhoneNo="456", EmailAddress="lisi@gmail.com"}
- };
- public IEnumerable<Contact> Get()
- {
- return contacts;
- }
- public Contact Get(string id)
- {
- return contacts.FirstOrDefault(c => c.Id == id);
- }
- public void Put(Contact contact)
- {
- if (string.IsNullOrEmpty(contact.Id))
- {
- contact.Id = Guid.NewGuid().ToString();
- }
- contacts.Add(contact);
- }
- public void Post(Contact contact)
- {
- Delete(contact.Id);
- contacts.Add(contact);
- }
- public void Delete(string id)
- {
- Contact contact = contacts.FirstOrDefault(c => c.Id == id);
- contacts.Remove(contact);
- }
和ASP.NET MVC Web应用一样,我们同样采用URL路由机制来实现请求地址与目标Controller和Action的映射,而针对API默认注册的路有如下所示。
广州网站建设,网站建设,广州网页设计,广州网站设计
- public class MvcApplication : System.Web.HttpApplication
- {
- //...
- public static void RegisterRoutes(RouteCollection routes)
- {
- //...
- routes.MapHttpRoute(
- name: "DefaultApi",
- routeTemplate: "api/{controller}/{id}",
- defaults: new { id = RouteParameter.Optional }
- );
按照注册的路由规则和Action方法名称与HTTP方法的默认影射机制,我们可以直接在浏览器中分别访问地址“/api/contact”和“/api/contact/001”得到所有联系人列表和ID为“001”的联系人信息。得到的结果如下图所示。




