方法在Win10 + VS2017(MVC5)测试通过

1、建立 WebApi项目:

选择菜单 “文件-》新建醒目-》web -》ASP.NET Web 应用程序”

输入项目名称和位置,确定,进入模板选择页面。

选择 WEB API 模板(选择Web API 时会添加对MVC 的支持)

2、添加ApiController

查看生产的目录结构,发现WebAPI 的结构和普通MVC程序结构是非常类似的。

默认VS会在Controllers 文件夹下创建一个示例控制器: ValuesController

通过查看该控制器代码,发现WebAPI的控制器与MVC控制器的主要区别:

1)WebAPI控制器类继承自 ApiController 类

2)WebAPI 方法返回的是原始数据,而不是视图。

(1) 添加自己的控制器时,只需要在参照示例,在 Controllers 文件夹下,新建一个继承自 ApiController 的类

ApiController 在命名空间 System.Web.Http 下

控制器一般按约定以 Controller结尾,如:ActionController

3、Web API 中的路由和方法

我们可以在  App_Start 文件夹中的 WebApiConfig 文件内,查看并修改 WebAPI 的路由(当然还有别的其他配置)

在该文件内,有一个默认路由配置

可以看出,WebAPI 路由与MVC理由非常类似,但也有有个明显的区别,在 Web API 路由中,没有 {action} 指令。

这是因为 Web API 默认操作以请求使用的HTTP动词来调度。

也就是说,在控制器中有以常见 Http 动词(Get, Post, Put, Delete, Head, Patch, Options)开头的方法,这个方法就可以匹配相应动词的请求。

例如,在 ValuesController 控制器中的 Get 方法

当客户端以 Get 方式请求到该控制器时,Web API 将自动匹配 Get 方法 。

对于名称不能匹配常见动词的方法,Web API 默认支持 post 请求,这时,需要在方法中使用 [Http...] 特性进行装饰。

如:

这个时候,默认的路由配置就不适用了,需要在 WebApiConfig  文件添加自定义的路由配置(主要是添加 {action} 特性,以支持不匹配动词的方法)

这一步完成后,就可以在本项目中调用该API方法了。

调用方法和普通 MVC 方法调用一样。

之所以说可以在本项目调用,因为在其他项目调用时,属于跨域操作,还需要跨域调用设置。

4、Web API  中跨域调用

要Web API 可以跨域调用,首先需要在项目中添加 Microsoft.AspNet.Cors 的引用。可以使用NuGet在项目中安装 Microsoft.AspNet.Cors

注: 在OWIN 中需要引用 的是 Microsoft.AspNet.WebApi.Cors

Microsoft.AspNet.Cors 安装成功后,需要在 WebApiConfig   文件中添加可跨域方法配置

最主要添加代码

config.EnableCors(new EnableCorsAttribute("*", "*", "*"));

EnableCorsAttribute 在命名空间 System.Web.Http.Cors 中(在新安装 的  Microsoft.AspNet.Cors 内)

而其中的参数,表示对可跨域调用的方法的配置(这里全为 "*" 表示所有方法均可跨域调用)

到处为止,Web API 创建、配置已经完成。

但是有的时候在跨域配置完成后,任然不能在其他项目进行跨域调用。这有可能是浏览器不支持的原因。浏览器的支持程度可以参照下图(从网上扒拉过来的)

这个时候,就需要在调用 API 的 JS 中设置对跨域的支持。

好在 JQuery 提供了简单的方法,只需要通过 JQ 设置 :jQuery.support.cors = true

上图中, jQuery.support.cors = true 表示设置浏览器对跨域调用的支持。

ajax 方法即是调用 控制器 (图中是 IPAddress)中的 方法 (GetIp, 参数 为 0),可以看出调用方法与MVC 方法是一样的。

至此,一个简单的 Web API 已经创建完毕。

Web Api ——创建WebAPI的更多相关文章

  1. Web Api系列教程第2季(OData篇)(二)——使用Web Api创建只读的OData服务

    前言 很久没更新了,之前有很多事情,所以拖了很久,非常抱歉.好了,废话不多说,下面开始正题.本篇仍然使用上一季的的项目背景(系列地址http://www.cnblogs.com/fzrain/p/34 ...

  2. 为 ASP.NET Web API 创建帮助页面(转载)

    转载地址:http://www.asp.net/web-api/overview/creating-web-apis/creating-api-help-pages 当创建web API 时,经常要创 ...

  3. 使用ASP.NET web API创建REST服务(二)

    Creating a REST service using ASP.NET Web API A service that is created based upon the architecture ...

  4. 使用ASP.NET web API创建REST服务(三)

    本文档来源于:http://www.cnblogs.com/madyina/p/3390773.html Creating a REST service using ASP.NET Web API A ...

  5. [转]Web Api系列教程第2季(OData篇)(二)——使用Web Api创建只读的OData服务

    本文转自:http://www.cnblogs.com/fzrain/p/3923727.html 前言 很久没更新了,之前有很多事情,所以拖了很久,非常抱歉.好了,废话不多说,下面开始正题.本篇仍然 ...

  6. Web Api 创建及其使用

    由于创建博客,我需要尝试一些新的技术,新的思路,所以我没规规矩矩的写博客,用上了诸多以前没用的东西,比如现在这个(我只是听过web api 我连 web server 都只是用过两三次/手动滑稽) 昨 ...

  7. ASP.NET---如何使用web api创建web服务

    1 首先创建asp.net web空项目,并且创建模拟数据,我在工程下面创建了一个Models文件夹,在文件夹Nodels下面创建类Product和Repository 具体如下: [Serializ ...

  8. Post model至Web Api创建或是保存数据

    前一篇<Post model至Web Api>http://www.cnblogs.com/insus/p/4343538.html中,使用Post来从Web Api获取数据.由于Post ...

  9. ASP.NET Web API 创建帮助页

    1. 安装 Microsoft.AspNet.WebApi.HelpPage 程序包 Install-Package Microsoft.AspNet.WebApi.HelpPage 2. 注册 Ar ...

随机推荐

  1. LinkedList简要分析

    LinkedList概述 LinkedList 实现List接口,底层是双向链表,非线程安全.LinkedList还可以被当作堆栈.队列或双端队列进行操作.在JDK1.7/8 之后取消了循环,修改为双 ...

  2. Drupal V7.3.1 框架处理不当导致SQL注入

    这个漏洞本是2014年时候被人发现的,本着学习的目的,我来做个详细的分析.漏洞虽然很早了,新版的Drupal甚至已经改变了框架的组织方式.但是丝毫不影响对于漏洞的分析.这是一个经典的使用PDO,但是处 ...

  3. 2019.04.07 第三次训练 【WHU校赛】

    A: (模拟退火+点到线段最短距离) https://blog.csdn.net/Link_Ray/article/details/89173222 B:✅ C: (线段树+二分) https://b ...

  4. OpenERP 干掉 产品计量单位中的 search more 和 create and edit

    实际操作中特别容易点错而新建了重复的单位,通过下边的方法可以将“search more”和 “create and edit”干掉 在新继承product.product的模块中,修改xml文件 这样 ...

  5. VS生成Map文件

    一.右键项目属性->链接器->启用增量链接:关闭,选择  否 (/INCREMENTAL:NO) 二.右键项目属性->链接器->调试-> 生成调试信息:是 (/DEBUG ...

  6. Ubuntu 10.10, 11.04, 11.10这三个版本无法从优盘启动

    问题:Ubuntu 10.10, 11.04, 11.10这三个版本无法从优盘启动 解决:从U盘启动安装的时候,会卡住不动.搞定办法相当简单,修改syslinux/syslinuxfg文件:将defa ...

  7. 第一章:初识PHP

    Web程序工作原理介绍? 工作方式? 浏览器首先向Web服务器发出请求,Web服务器对请求做出响应,将响应数据发送给客户端浏览器,通常是一个HTML文件,然后通过浏览器把HTML文件信息显示在屏幕上. ...

  8. 记一次接口调用耗时服务端PHP-FPM配置调优

    最近测试人员不时有反馈,APP首页打开会出现除了基本的页面布局,需要展示数据的地方都是空白. 想着最近首页接口有过调整,新增数据.会不会是接口改动导致的?? 但APP首页接口都是读取redis的,应该 ...

  9. 百度开源e-chart初探

    前言: 近年来,在数据服务的公司中,数据可视化越来越重要.随着而来的,国内外正在如火如荼的开发各种在线js视图展示框架.而百度的e-chart算是实用性较高且体验最好的!今天闲来无事,便来玩玩~ ec ...

  10. 【angular5项目积累总结】优秀组件以及应用实例

    1.手机端 图片预览组件 组件:sideshow 效果图:(预览图全屏 且可以左右移动)                  code: <div class="row ui-app-s ...