C# WebAPI系列(1)

WebApi是微软在VS2012 MVC4版本中绑定发行的,WebApi是彻底基于Restful标准的框架。RestFul: (英文:Representational State Transfer,简称REST)网上关于Restful定义的资料不少,我我的理解的Restful api 是指基于资源的定义的接口,它的全部接口都是对资源的操做。REST的核心原则是将你的API拆分为逻辑上的资源。这些资源经过http被操做(GET ,POST,PUT,DELETE).Restful Api接口标准的定义知足CURD,标准的接口定义以下:web

  • Post:新增记录
  • Put:修改记录
  • Get:获取数据
  • Delete:删除数据

webapi标准的定义形式为:每一个controller都对应一个Model,controller中的接口都应该是对controller所对应的那个model进行的操做,因此上诉的post,get,put,delete都是对model所对应的资源操做。可是在实际的操做中,可能没有办法彻底知足这种定义的形式,力求尽可能知足。json

 

WebAPI项目和典型的MVC项目同样,包含主要的Models,Views,Controllers等文件夹和Global.asax文件。Views对于WebAPI来讲没有太大的用途,Models中的Model主要用于保存Service和Client交互的对象,这些对象默认状况下会被转换为Json格式的数据进行传输,Controllers中的Controller用于提供服务。和普通的MVC同样,Global.asax用于配置路由规则。api

Model

Model必须提供public的属性,用于json或xml反序列化时的赋值,一个简单的model定义以下:框架

    public class Person
    {
        public string name { set; get; }
        public string age{ set; get; } 
    }

Controller

WebAPi中的Controller和MVC的Controller比较相似,只是WebAPI的Controller继承于ApiController,而MVC的Controller继承于Controller。一个Controller中能够包含多个Action,Action的响应规则受到Global.asax路由规则的控制。一个简单的Controller以下post

public class CompanyController : ApiController
{
    public string Get(int id)
    {
       return "OK";
    }
}

路由

新创建的WebAPI自带了默认的路由规则,代码以下:url

    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "api/{controller}/{id}",
                defaults: new { controller = "Login", action = "Index", id = UrlParameter.Optional }
            );
        }
    }

能够看到,默认的路由规则只指向了Controller,没有指向具体的Action,由于默认状况下,对于Controller中的Action的匹配是和Action的方法名相关联的。而在实际的调用过程当中,咱们通常须要制定到特定的Action,为了知足指向特定的Action须要修改上诉的路由规则:xml

      url: "api/{controller}/{action}/{id}"
相关文章
相关标签/搜索