• WebAPI(一)


    WebAPI的由来:

           在早期的时候,我们用来传输数据的接口是   .NetRemoting:平台要求,到后来的Webservice(跨平台、SOAP协议,数据以xml的格式体现)、WCF(也支持Restful风格,但是它

    并不是为Restful服务,相对于而言,会显得比较重量级)以上接口,在开发工作中,我们默认为后台接口,而随着移动互联网行业的兴起,调用方可能不再局限于PC,会包括诸如IOS安卓等,此时webapi就诞生了。

    那么,WebAPI到底是什么? WebAPI其实就是遵循Restful风格所架设的一种API

     

      Restful概述:

               架构风格,以资源为视角,来描述服务的。

        以json/xml....来描述,http方法 统一了数据操作

      Restful要素

      表现层的状态转换:资源;统一接口;URI;无状态;

         资源:实体就是资源,在数据上体现是: json/xml/数据流......

         统一接口:CRUD(增删改查),是通过httpmethod体现 get post put/patch delete

         URIurl

         Get:查询  post 新增  put/patch 修改 delete 删除

         无状态:http无状态(前后没有关联)

    路由(默认)

    1 启动 Application_Start--WebApiConfig.Register--把路由规则写入一个容器

    2 运行 请求会去容器匹配--找到第一个满足的控制器--然后找actionhttp method):

           a 以特性为准 [HttpGet][HttpPost][httpPut][Httppatch][HttpDelete] 特性写在方法的上面

           b 方法名Get开头

           c (找方法时)优先最匹配  api/values/1--Get(int id)

    特性路由

     概念  

     在实际中会存在一个资源,同一种操作更新,可能有多个来源途径,或者不同版本号,如果按照默认路由则无法区分

      我们可以在方法之前加上特性路由标识Route

    Route("api/values/{id}/GetName")]//注意最后的GetName不是方法名,可以理解为别名

    路由前缀

    通常情况下,一个Controller下的action会使用相似的路由模板,如

    [Route("api/books")]

    ·[Route("api/books/{id:int}")]

    ·[Route("api/books/{bookid}/authors")]

    这时候可以为整个controller指定[RoutePrefix]特性,以使用共同的前缀,把[RoutePrefix("/api/books")]加到controller上,action的路由特性就变成这样:

    ·[Route("")]

    ·[Route("{id:int}")]

    ·[Route("{bookid}/authors")]

    此外,路由前缀中也可以包含参数,如[RoutePrefix("api/{userid}/books")]

    这里还有两个小技巧

    如果有某个特殊路由不希望使用前缀,可以在路由中添加~,如[Route("~api/otherbooks")]

    有时候需要几个路由片段结合起作用,如日期 /api/books/date/2013/06/17

    这时候就需要使用字符* ,

    [Route("date/{*date:datetime:regex(\d{4}/\d{2}/\d{2})}")],不过这种参数只能用作路由的最后一个参数

      

  • 相关阅读:
    jquery.roundabout.js图片叠加3D旋转插件多功能图片翻转切换效果
    jquery.SuperSlide.js只需要调用一个插件就能实现网页大部分特效--推荐
    很不错的JS插件大全
    kxbdSuperMarquee.js滚动的神器-推荐
    琅琊榜
    三国群英2专题
    css中为了清除浮动经常用到的after样式
    非常简单的升级phpnow自带的php版本到5.3的方法
    手机访问网站如何自动跳转到手机版本自动转到手机网站
    php中几个字符串替换函数详解
  • 原文地址:https://www.cnblogs.com/JohnTang/p/10969908.html
Copyright © 2020-2023  润新知