zoukankan      html  css  js  c++  java
  • 20181124_webAPI基础01_创建一个基础的WebAPI项目

    1. webApi属于RESTful架构风格, 而RESTful风格, 是以资源为视角来描述服务的

    2. 创建webAPI项目

    3. 选择webAPI, 然后mvc会自动引用

     

    4. 点击确定, 就创建好一个WebAPI项目, 项目目录如下:

     

    5. 现在就可以尝试访问了:

    6. 简单介绍:

      a) 此时controller中有两个默认的controller

     

      b) webAPI的访问方式, 这里返回的是xml, 而ie下返回的是 json; 这是由response的返回头决定的, 可以f12看看返回头的定义

     

    7. 在浏览器输入http://localhost:4071/api/values, 请求的过程是什么?

     a) 一个网站启动的时候, 第一个启动的肯定是Global.asax文件中的WebApiApplication下面的Application_Start()站启动的时

     

      b)    路由注册:

     

    8. webAPI的运转流程:

       1 启动的时候:  Application_Start-→WebApiConfig.Register-→把路由规则写入一个容器(routeTable)

          2 运行的时候: 请求会去容器匹配--找到第一个满足的控制器--然后按照以下规则去找action(http method):

               a 优先查找方法时候标记了特性 [HttpGet], 如果有标记, 则优先找参数最佳匹配的

               b 如果都没有有标记[HttpGet]特性, 则找方法以Get开头

               c (找方法时)优先参数最匹配  api/values/1--→Get(int id); 也就是说当请求过来的时候, 又能找到以[HttpGet]特性的方法, 又能找到以 Get开头的方法, 那么则使用参数做为最佳匹配

              d 如果没有 [HttpGet] 特性, 也没有以 Get开头的方法, 则直接会报错了

    9. 基于WebAPI中的普通路由,访问时带来的两个问题:

      a)    对一个资源(webAPI中所说的资源可以理解为一条数据)做同一种操作, 可能有多种方式; 比如根据用户Id修改用户密码, 根据用户Id修改用户名称, 根据用户Id修改用户邮箱

      b)   WebAPI中经常会有版本的问题, 比如在一个values控制器里, 对某个方法进行升级, 表示v1版本, v2版本; 那么如果只使用webAPI的默认路由来调用的话, 就不能区分了

           以上两种问题, 只使用webAPI中的默认路由已经办不到了, 所以webAPI又提供了一种特性路由

      c)   特性路由的写法:

              1 在Global文件的config.MapHttpAttributeRoutes()中写;

              2 也可以直接在 控制器下的action上打特性路由标记, 比如    [Route("api/values")](下图) ; 参考 ValuesController.cs 中的路由特性标记

    10. 添加控制器:

      a)  右键Controllers目录

     

    b)  选择一个控制器类型

     

    c)   命名控制器

     

    d) 等待完成

     

    e)  完成

     

  • 相关阅读:
    POJ3984 输出路径
    ACWING 844.走迷宫
    N皇后问题 DFS解法(给出两种)
    Codeforces Round #632 (Div. 2)
    HDU--1198 Farm Irrigation (并查集做法+DFS做法)
    HDU--1325 并查集判树(有向无环图)
    python接口自动化(二十) 发xml格式post请求
    python接口自动化(十九) 签名(signature)鉴权(authentication)之加密(HEX,MD5,HMAC-SHA256)
    python接口自动化(十八) 下载excel文件(Content-Type:octets/stream)
    python接口自动化(十七) requests获取响应时间(elapsed)与超时(timeout)
  • 原文地址:https://www.cnblogs.com/wxylog/p/10011284.html
Copyright © 2011-2022 走看看