zoukankan      html  css  js  c++  java
  • 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})}")],不过这种参数只能用作路由的最后一个参数

      

  • 相关阅读:
    Treap 树堆 容易实现的平衡树
    (转)Maven实战(二)构建简单Maven项目
    (转)Maven实战(一)安装与配置
    根据请求头跳转判断Android&iOS
    (转)苹果消息推送服务器 php 证书生成
    (转)How to renew your Apple Push Notification Push SSL Certificate
    (转)How to build an Apple Push Notification provider server (tutorial)
    (转)pem, cer, p12 and the pains of iOS Push Notifications encryption
    (转)Apple Push Notification Services in iOS 6 Tutorial: Part 2/2
    (转)Apple Push Notification Services in iOS 6 Tutorial: Part 1/2
  • 原文地址:https://www.cnblogs.com/JohnTang/p/10969908.html
Copyright © 2011-2022 走看看