.NET MVC 方式实现 Web API-初识篇

作者:vkvi 来源:ITPOW(原创) 日期:2017-4-19

Web API 就是通过 HTTP 提交一串数据,然后处理,然后返回。

本连载介绍在 Visual Studio 中如何利用 MVC 实现 Web API(传统方式不用介绍了,人人都会。)

首先,新建项目。

在新建“ASP.NET Web 应用程序”后,选择 Web API。

新建 Web API 项目

以上是 Visual Studio 2017 的截图。

然后,认识核心内容

新建后,会发现很多文件,有很多多余的,我们关注核心文件。

Global.asax、App_Start/WebApiConfig.cs

Global.asax 这里面配置了 Web API 的路由:GlobalConfiguration.Configure(WebApiConfig.Register);。

App_Start/WebApiConfig.cs 中的 config.Routes.MapHttpRoute 使用的 name 不能重复。

WebApiConfig.cs

这里面配置了路由模板:api/{controller}/{id}。

ValuesController.cs

这里面根据路由映射响应请求,比如 Get() 方法(注意:其代码体只是一个示例,可以根据情况修改)。

使用一下

编译后,浏览器中输入 http://localhost:xxx/api/values/

返回一串 XML,由 XML 包装着一个值(微软很喜欢用 XML 作为返回结果)。

可是我们并没有 api、values 文件夹,为什么 URL 中有呢?原来这就是路由。路由定义了:第一层为 api;第二层为 controller 的名称,也就是类 ValuesController 的前半部分——values(微软对待路由是忽略大小写的);第三层是 id,在注册路由是标明了它是 Optional 的。

所以上面的 URL 就是由 public IEnumerable<string> Get() 方法处理的。

而 http://localhost:xxx/api/values/1 这个 URL 是由 public Result Get(int id) 处理的。注意:参数 id 与路由中配置的名称要一样。

如果我们把 Get(int id) 改为 Get(int id2) 然后用 http://localhost:xxx/api/values/1 去访问,会有什么结果呢?结果就是交由 Get() 来响应,因为参数名称路由中定义的名称对应不上了,就会将 /1 当作是多余的来对待。

为什么是响应 Get 方法,而不是 Post 方法呢?因为我们是 GET 提交呀。所以:

  • 路由决定了:类、方法参数。
  • HTTP Method 决定了:方法名称。

最后:注册路由后,真实存在的文件能用原来的方式访问吗?能!但是如果恰好你的文件路径与路由配置相同,那就……

相关阅读

相关文章