2控制器操作返回值 类型 说明 void 操作返回值为void时,Web API返回空HTTP响应,其状态码为204(无内容) HttpResponseMessage Web api会将此返回值直接转换为...Web API会将其直接转换为HTTP消息。...Web API会调用序列化器将其序列化后写入HTTP响应。...当控制器操作返回此类型时,Web API会调用ExecuteAsync方法创建类型为HttpResponseMessage的实例,然后将这个实例转换为HTTP消息。...参考: 1.https://docs.microsoft.com/en-us/aspnet/web-api/ 2.https://developer.mozilla.org/zh-CN/docs/Web
虽然ASP.NET Web API框架采用与ASP.NET MVC框架类似的管道式设计,但是ASP.NET Web API管道的核心部分(定义在程序集System.Web.Http.dll中)已经移除了对...System.Web.dll程序集的依赖,实现在ASP.NET Web API框架中的URL路由系统亦是如此。...也就是说,ASP.NET Web API核心框架的URL路由系统与ASP.NET本身的路由系统是相对独立的。...另一个同样通过字典类型表示的只读属性DataTokens,我们应该不会感到陌生,至于通过制度属性Handler返回的HttpMessageHandler对象是组成ASP.NET Web API消息处理管道的核心...Web API管道的HttpConfiguration对象,这依赖于我们对Web API的寄宿方式,这并没有定义在ASP.NET Web API的核心框架之中。
现在我们来了解一下如何在使用 ASP.NET Web API 的生产环境中实际实施这些原理,并使用此框架提供的所有可扩展性和功能。 在内核级别,ASP.NET Web API 支持格式化程序的概念。...幸运的是,这种不一致性在 ASP.NET Web API 中已通过引入格式化程序得到解决。...此步骤几乎可以用与在 ASP.NET 或 ASP.NET Web API 自托管中相同的方式来实现,只是所需的 HttpConfiguration 实现不同。...Web API 管道中配置格式化程序后,任何控制器使用 HAL 都可以简单地返回一个模型类,该模型类从格式化程序要序列化的 LinkedResource 派生。...格式化程序使您可以轻松使用新媒体类型扩展 Web API。 在 Web API 控制器中提供更好的链接支持 以前的 ProductCatalogController 示例肯定有不妥之处。
Routing Tables路由表 在Asp.Net Web API中,一个控制器就是一个处理HTTP请求的类,控制器的public方法就被叫做action方法或简单的Action。...当Web API接收到一个请求的时候,它将这个请求路由到一个Action。 注意:Web API的路由与Asp.Net MVC的路由是非常相似的。...通过这种方式,可以用“/product”进入一个控制器,而“/api/product”进入一个Web API控制器。当然,如果你不喜欢这种约定,也可以修改这个默认路由表。 ...1.为了找到Controller,Web API会把“控制器”加到{Controller}变量的值 2.为了找到Action,Web API会查找HTTP方法,然后寻找一个名称以HTTP...3.用这个类型名查找Web API控制器 例如,如果路由字典的键-值对为”controller“=”product“,那么控制器类型便为”ProductController“。
创建一个Web API项目 第一步,创建以下项目 ? 当然,你也可以创建一个Web API项目,利用 Web API模板,Web API模板使用 ASP.Net MVC提供API的帮助页。...Web API中,控制器就是一个处理HTTP请求的对象。...注意,如果你使用了ASP.NET MVC 已熟悉控制器,Web API控制器类似于MVC控制器,但是继承ApiController,而不是Controller类 ?...ASP.NET Web API使它容易操作HTTP响应消息。...默认情况下,ASP.NET Web API框架从路由获取简单的参数类型,从请求正文获取复杂的类型。 第五个方法:删除产品,在控制器添加代码如下。
什么是Web API HTTP不仅仅服务于Web Pages。他也是一个创建展示服务和数据的API的强大平台。HTTP是简单的,灵活的,无处不在的。... Web API主要用于做开放API接口,更抽象,更不注重VIew生成 2.自身实现区别 两种框架主要使在Asp.Net的基础上进行改造,主要是对...MVC像是在一层上建立了第二层,引伸出更大的路由机制,实现了诸如MvcHandler和ControllerFactory这种消息处理和后台控制器方法选择机制。...而Web API除了扩展前者外,另外写出了一套独立的,独立于Asp.Net的消息处理管道,就像借鉴了原来的房子模型,重新设计出了另一套别墅,这也很好的解释了为什么Web API可以寄宿在不同的宿主上(宿主本质就是利用一个具体的一个用程序为...何况它们两者虽然都有Controller和Action,但是请求的实现和响应的回复机制也是不同的,比如Web API处理消息的两个核心类是HttpRequestMessage和HttpResponseMessage
路由调试 RouteDebugger 是调试 ASP.NET MVC 路由的一个好的工具,在ASP.NET WEB API中相应的有 WebApiRouteDebugger ,Nuget安装 Install-Package...(在上下文“Default”中的“C:\Windows \Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor \v4.0_2.0.0.0_...Refer: http://www.asp.net/web-api/overview/creating-web-apis/creating-api-help-pages http://blogs.msdn.com.../b/webdev/archive/2013/04/04/debugging-asp-net-web-api-with-route-debugger.aspx http://www.asp.net/web-api.../overview/testing-and-debugging/tracing-in-aspnet-web-api
Web API 的开发类似于 ASP.NET MVC 中控制器的开发,但是相对于直接使用 ASP.NET MVC 来返回 Json 对象的方式而言,Web API 封装了数据的序列化、反序列化,接口、实现都更加简单...跟 ASP.NET MVC 的 Json 序列化不同的是,Web API 使用了 Newtonsoft.Json 框架来进行序列化。...Action 匹配 Web API 框架默认是基于 Restful 架构模式的,与 ASP.NET MVC 有区别的是,它会根据 Http 请求的 HttpMethod(Get、Post、Put、Delete...username=hqf@qq.com&password=dsd 关于 POST 参数绑定 Web API 相对于 ASP.NET MVC,使用了新的参数绑定类。.../cibrax/archive/2012/08/10/binding-form-data-in-asp-net-web-api.aspx 不错的示例代码 MSDN 上有一个比较全面的示例代码:
ASP.NET Web API 是一种框架,用于轻松构建可以访问多种客户端(包括浏览器和移动设备)的 HTTP 服务。...ASP.NET Web API 是一种用于在 .NET Framework 上构建 RESTful 应用程序的理想平台。 这是 MSDN 给出的官方定义!...关于 RESTful Api 的更多信息, 可以参考 阮一峰老师的文章 理解RESTful架构 RESTful API 设计指南 创建WEB API ?...ASP.NET Web API 可以自动序列化到 JSON、 XML 或某种其他格式,然后写入 HTTP 响应消息的正文序列化的数据。 只要客户端可以读取的序列化格式,它可以反序列化对象。...添加控制器 ? 添加 model 的应用,添加部分测试数据。 ? 使用 POSTMAN 测试 ?
Asp.Net Web API不可以需要IIS。可以自己在主机上承载一个Web API 创建WebAPI.Server项目 创建一个控制器项目的服务端 ? ...string Category { get; set; } public decimal Price { get; set; } } } 然后添加一个ProductController控制器...,这个控制器继承于Sytem.Web.Http.ApiController。...记得扩展引用System.Web.Http using System.Collections.Generic; using System.Linq; using System.Net; using System.Web.Http...API 在Program类中添加如下引用 using System.Http; using System.Web.Http.SelfHost; 然后再添加如下代码 using System; using
HttpResponseException-----HTTP响应异常 如果Web API控制器抛出一个未捕捉的异常,会发生什么呢?...注意:ASP.NET Web API中的异常过滤器与ASP.NET MVC中是及其相似的。然后,它们被声明在不用的命名空间下,且功能也是独立的。...特别强调以下,ASP.NET MVC中使用的HandlerErrorFilterAttribute不会处理Web API控制器抛出的异常。 ...API控制器将该过滤器的一个实例添加GlobalConfiguration.Configuration.Filter集合。...这个集合中的所有异常过滤器会应用于任何Web API控制器Action public class WebApiApplication : System.Web.HttpApplication {
1 概要 创建ASP.NET Web Api 时模板自带Help Pages框架。...2 问题 1)使用VS创建Web Api项目时,模板将Help Pages框架自动集成到其中,使得Web Api项目引入了MVC框架开发包,使得项目看起来杂乱。...2)自带的Help Pages框架无法针对Odata控制器生成API文档。...()); // Web API 路由 config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute...2)重构ApiExplorer,获得Odata控制器的API文档 步骤1,重构ApiExplorer public class CustomApiExplorer : ApiExplorer {
这篇文章主要是介绍ASP.NET Web API的处理架构:当一个HTTP请求到达直到产生一个请求的过程。...ASP.NET Web API 的处理架构图如下,主要有三层组成:宿主(hosting),消息处理管道(message handler pipeline)和控制器处理(controller handling...宿主(Hosting) 底层负责Web API的宿主,Web API之间的接口和HTTP 处理引擎。一句话,这一层负责创建HttpRequestMessage实例。然后把他们推入到上层的消息处理管道。...目前在ASP.NET Web API里头已经内建的宿主选项有2个:self-hosting 和 web hosting, web hosting也就是宿主在IIS的ASP.net 的处理管道里,Self-hosting...消息处理管道(Message Handler Pipeline) 中间层是 message handler pipeline,这一部分就是 WCF Web API 的内容了,通过 HttpServer
具体内容可以参看 WCF Web API is now ASP.NET Web API。...几个月之前WCF和ASP.NET 团队合并,把WCF Web API的内容并入了ASP.NET Web API,目前WCF Web API的所有功能并没有完成移植,将在ASP.NET Web API正式发布的时候完成移植...同时提供了一份WCF Web Api到ASP.NET Web API的迁移指南How to Migrate from WCF Web API to ASP.NET Web API,其中列出了 WCF Web...Api 到 ASP.NET Web Api 的映射表: WCF Web API ASP.NET Web API Service Web API controller Operation Action...ASP.NET Web API还有一个特性就是可以类似于WCF自宿主方式部署,当然也可以在IIS上运行。 下面来看看如何使用 ASP.NET Web Api (使用的是 VS2010版) ?
.NET Core Web API Swagger 文档生成 REST API 中文档说明,用Swagger都快成了一种规范了, 之前在公司里面就折腾过了, 效果还是很不错的, 不过之前都是维护一个swagger...json/yaml, 后来发现其实可以直接在API实现的地方根据实现来生成swagger在线文档, 拖延症发作的我并没有去管, 这次有个新API在做, 于是折腾了一下....起步 首先要有个.NET Core项目....{ [Route("api/v1/health")] [ApiController] public class HealthController : ControllerBase...{ // GET api/values [HttpGet] public ActionResult> Get
路由配置 routePrefix路由前缀,必须含有Odata字符串,否则路由不到Odata控制器。 V1表示版本,可以使用这种方式进行版本控制,也可以使用其他方式。...config.Count().Filter().OrderBy().Expand().Select().MaxTop(null);这样配置使Odata操作符可用(Web Api2的旧版本不必如此设置)。...collectionUserId"); builder.Namespace = "Service"; return builder.GetEdmModel(); } 控制器与控制器方法...]这三个特性,由于[ApiExplorerSettings(IgnoreApi = true)] 的影响,在System.Web.Http.Description.ApiDescription实例中不包含继承自...ODataController的控制器;控制器方法使用了[EnableQuery]修饰后才可支持Odata操作符。
它是 ASP.NET 平台的核心部分。能被MVC或者其他类型的web应用使用。同时它也可以用作独立的web服务应用程序。...WEB API 的请求映射到Http动词对应的action;MVC 的请求直接映射到对应的action name。 ASP.NET WEB API是新的框架和ASP.NET框架核心的一部分。...您可以在单个项目中混合使用WEB API和MVC控制器来处理高级AJAX请求并以JSON,XML或任何其他格式返回数据,并构建完整的HTTP服务。通常,这将是WEB API自承载。...当你混合使用了MVC和WEB API控制器,你想实现授权那么你必须创建两个过滤器一个为MVC和另一个为WEB API,因为两者是不同的。...像ASP.NET MVC5那样,可以在WEB API2的controller级别和action级别定义特性路由: Controller level routing(控制器级别路由) 在控制器级别定义的特性路由将应用到所有
4 对第二种方法的错误点分析: 看Web api dll源码中的设置: ?...这段代码的核心方法: ? 上面的方法,循环读取请求数据,当设置的缓冲区大小小于客户端发送到服务器的数据量时,要执行多次循环读取数据,每次循环读取数据都是调用两个异步方法: ? ?
ASP.NET Web API 支持 CORS 支持的代码参见 http://code.msdn.microsoft.com/Implementing-CORS-support-418970ee,也可以通过...Nuget 获取WebAPIContrib PM> Install-Package WebAPIContrib 然后给你的Web API的Action 打上标签[EnableCors],例如下面的代码.../blog/2010/05/25/cross-domain-ajax-with-cross-origin-resource-sharing/ Using CORS to access ASP.NET services...across domains Cross-Origin Resource Sharing (CORS) and WCF 在asp.net web api中动态修改action的名字 ASP.NET Web...API: CORS支持和基于属性的路由改进 Using Cross Origin Resource Sharing (CORS) in ASP.NET Web API
版本控制 版本控制的方法有很多,这里提供一种将Odata与普通web api版本控制机制统一的方法,但也可以单独控制,整合控制与单独控制主要的不同是:整合控制通过VersionControllerSelector...来选择控制器过滤器,而不是直接选择控制器。...采用此机制来控制版本,应按照如下规则命名控制器: 自定义标识符+版本+Controller 自定义标识符:能体现控制器含义的字符串 版本:表示版本的字符串,例如:V1,V1.0;不建议使用V1.0这样的写法...,因为这样控制器名称会相当怪异,如果表示小版本号,那么可以使用V1D0,这种写法,即用一个字母代替句号。...命名空间对应了项目文件的组织形式,控制器的命名空间为: ?
领取专属 10元无门槛券
手把手带您无忧上云