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)  完成

 

猜你喜欢

转载自www.cnblogs.com/wxylog/p/10011284.html