ASP.NET Web API路由,简单来说,就是把客户端请求映射到对应的Action上的过程.在"ASP.NET Web API实践系列03,路由模版, 路由惯例, 路由设置"一文中,体验了通过模版.惯例.HTTP方法来设置路由,这种做法的好处是把路由模版统一放在了App_Start文件夹下的WebApiConfig类中,方便管理,但缺点是不够灵活. REST把一切都看成资源,有时候,一个资源连带子资源,比如Customer和Orders密切关联,我们可能希望输入这样的请求:cust…
本篇接着上一篇"ASP.NET Web API实践系列06, 在ASP.NET MVC 4 基础上增加使用ASP.NET WEB API",尝试获取数据. 在Models文件夹下创建Comment类: namespace MvcApplication5.Models { public class Comment { public int ID { get; set; } public string Author { get; set; } public string Text { ge…
ASP.NET Web API的消息处理管道可以理解为请求到达Controller之前.Controller返回响应之后的处理机制.之所以需要了解消息处理管道,是因为我们可以借助它来实现对请求和响应的自定义处理.所有的请求被封装到HttpRequestMessage这个类中,所有的响应被封装到HttpResponseMessage这个类中. 既然消息处理管道是可扩展的,那么,ASP.NET Web API一定为我们准备了便于扩展的接口或抽象类,它就是HttpMessageHandler抽象类.…
ASP.NET Web API本质是由一个进程托管的一组类,需要宿主,这个宿主可以是ASP.NET应用程序,可以是MVC项目,可以是控制台应用程序,也可以是自己定制的宿主. 在VS2012中创建一个"ASP.NET MVC4 Web应用程序",选择"Web API"模版,会为我们自动添加一些相关组件. App_Start下的WebApiConfig类包含一个Register方法,这在方法中完成Web API的各种配置,默认有一个路由设置: config.Routes…
本篇尝试在现有的ASP.NET MVC 4 项目上增加使用ASP.NET Web API. 新建项目,选择"ASP.NET MVC 4 Web应用程序". 选择"基本"项目模版. 在Controllers文件夹下添加一个名称为"TestController"的空API控制器. 在引用文件夹中多了以下程序集:System.Web.HttpSystem.Web.Http.WebHostSystem.Net.HttpSystem.Net.Http.Fo…
ASP.NET Web API的路由和ASP.NET MVC相似,也是把路由放在RouteTable中的.可以在App_Start文件夹中的WebApiConfig.cs中设置路由模版.默认的路由模版是: routes.MapHttpRoute( name: "API Default", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } );…
本篇体验在MVC4下,实现一个对Book信息的管理,包括增删查等,用到了EF Code First, 使用Unity进行依赖注入,前端使用Bootstrap美化.先上最终效果: →创建一个MVC4项目,选择Web API模版. →在Models文件夹创建一个Book.cs类. namespace MyMvcAndWebApi.Models { public class Book { public int Id { get; set; } public string Name { get; set…
创建一个空的ASP.NET Web Form项目. 右键项目,添加新项,创建Web API控制器类,TestController. 删除掉TestController默认的内容,编写如下: using System.Web.Http; namespace WebApplication1 { public class TestController : ApiController { [AcceptVerbs("Get")] public string SayHello() { retur…
本篇摘自:InfoQ的微信公众号 在设计API的时候考虑的问题包括:API所使用的传输协议.支持的消息格式.接口的控制.名称.关联.次序,等等.我们很难始终作出正确的决策,很可能是在多次犯错之后,并从中吸取经验,才能够接近正确的决策.而通过迭代的方式,只要有足够的机会,就能在API设计方面接近完美. 一个公开的API就像砖石,它是永恒不变的.(引自Joshua Block) 要知道,API的变更代价很大,并且伴随着很大的风险.但同时,破坏性的变更通常不可避免. 我们要做的是:在接口发布之前尽早迭…
引言 前边两篇博客介绍了Web API的基本框架以及路由配置,这篇博客主要解决在前后端分离项目中,为前端人员提供详细接口说明的问题,主要是通过修改WebApi HelpPage相关代码和添加WebApiTestClient组件实现WebAPI接口详细说明以及接口测试. WepAPI系列博客 ASP.NET Web API 2系列(一):初识Web API及手动搭建基本框架 ASP.NET Web API 2系列(二):灵活多样的路由配置 WebApi HelpPage帮助页 通过VS2017创建…
1.导言 随着Web技术的发展,现在各种框架,前端的,后端的,数不胜数.全栈工程师的压力越来越大. PC端,pad端,移动端App(安卓/IOS)的发展,使得前后端一体的开发模式十分笨重.因此,前后端分离是web发展的趋势,其中,RESTful API是目前前后端分离的最佳实践,ASP.NET Web API是在.NET Framework上构建RESTful应用程序的理想平台.Web API应用如下图所示. 2.ASP.NET Web API介绍 ASP.NET Web API是一个框架,可以…
1. 导言 路由系统是请求消息进入ASP.NET Web API消息处理管道的第一道屏障,其根本目的在于利用注册的路由对请求的URL进行解析以确定目标HTTPController和Action的名称,以及与目标Action方法某个参数进行绑定的路由变量. WebService和WCF的协议都是soap协议,数据的序列化和反序列化都是soap的格式.而WebAPI是基于Http协议,请求和返回格式结果默认是 json格式,因此,比WCF更简单.更通用,比 WebService 更节省流量.更简洁.…
从编程的角度来讲,ASP.NET Web API针对CORS的实现仅仅涉及到HttpConfiguration的扩展方法EnableCors和EnableCorsAttribute特性.但是整个CORS体系不限于此,在它们背后隐藏着一系列的类型,我们将会利用本章余下的内容对此作全面讲述,今天我们就来讨论一下用于定义CORS授权策略的EnableCorsAttribute特性背后的故事. 目录 一.CorsPolicy 二.CorsPolicyProvider 三.CorsPolicyProvid…
1.引言 通过前边的系列教程,我们可以掌握WebAPI的初步运用,但是此时的API接口任何人都可以访问,这显然不是我们想要的,这时就需要控制对它的访问,也就是WebAPI的权限验证.验证方式非常多,本文就重点介绍一种常用的验证方式:基于JWT的token身份认证方案. 2.前期回顾 Web API系列(一):初识API及手动搭建基本框架 Web API系列(二):灵活多样的路由配置 Web API系列(三):添加接口详细说明及测试 3.认识JWT JWT是 JSON Web Token 的缩写,…
前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html. 本文的示例代码的下载地址为http://pan.baidu.com/s/1o6lqXN8 大多数的数据集定义实体间的关系:客户有订单.书籍有作者.产品有供应商.客户端可以使用OData操作实体间的关系.给定一个产品,你可以找到该产品的供应商.您也可以创建或者删除关系.例如,您也可以为一个产品设置一个供应商. 本教程将会展示…
Asp.Net Web API 2第十八课——Working with Entity Relations in OData   前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html. 本文的示例代码的下载地址为http://pan.baidu.com/s/1o6lqXN8 大多数的数据集定义实体间的关系:客户有订单.书籍有作者.产品有供应商.客户端可以使用OData操作实体间的…
导航 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html. 本文主要来讲解以下内容: 〇.前言 Ⅰ.Using[FromUri] Ⅱ.Using[FromBody] Ⅲ.Type Converters Ⅳ.Model Binders Ⅴ.Value Providers Ⅵ.HttpParameterBinding Ⅶ.IActionValueBinder 前言 阅读本文之前,您也可…
前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html 本文参考链接文章地址http://www.asp.net/web-api/overview/formats-and-model-binding/model-validation-in-aspnet-web-api 当客户端发送数据给你的Web API时,你通常希望在做其它处理之前先对数据进行验证. Data Annotati…
前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html 本文描述ASP.NET Web API如何实现内容协商. HTTP规范(RFC 2616)将内容协商定义为“在有多个表现可用时,为一个给定的响应选择最佳表现的过程”.在HTTP中内容协商的主要机制是以下请求报头: Accept:响应可接收的媒体类型,如“application/json”.“application/xml”,…
前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html 本文描述ASP.NET Web API中的JSON和XML格式化器. 在ASP.NET Web API中,媒体类型格式化器(Media-type Formatter)是一种能够做以下工作的对象: 从HTTP消息体读取CLR(公共语言运行时)对象 将CLR对象写入HTTP消息体 Web API提供了用于JSON和XML的媒体类…
前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html 本教程演示如何在ASP.NET Web API中支持额外的媒体格式. Internet Media Types——Internet的媒体类型 媒体类型,也叫做MIME类型,标识了一片数据的格式.在HTTP中,媒体类型描述了消息体的格式.一个媒体类型由两个字符串组成:类型和子类型.例如: text/html image/png…
前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html 本文主要来介绍在Asp.Net Web API使用Web API的Decpendency Resolver在控制器中如何注入依赖. 本文使用VS2013.本文的示例代码下载链接为http://pan.baidu.com/s/1BvFTs 为什么要使用Dependency Resolver 一个dependency 其实就是一…
前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html Asp.Net Web API可以需要IIS.你可以在你自己的主机上来承载一个Web API. 本教程来展示在控制台应用程序中来承载一个Web API.使用的开发工具为VS2013. 本文示例代码下载链接http://pan.baidu.com/s/1d56zf 创建一个控制台应用程序 这里我默认的Framework版本为4…
前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html 路由就是Web API如何把URI匹配到一个Action的描述.Web API支持一种新的路由类型,被叫做属性路由.顾名思义,属性路由是用属性来创建路由.在你的Web API中属性路由可以让你更好的控制URI.你能容易的创建描述资源阶层的URIs. 较早的基于公约的路由风格是全面被支持的.事实上,你能够在同一个项目中联合使用…
前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html 本文主要来讲解Asp.Net Web API中错误和异常的处理,包括以下几点: 1.HttpResponseException——HTTP响应异常 2.Exception Filters——异常过滤器 3.Registering Exception Filters——注册异常过滤器 4.HttpError——HTTP错误 H…
Parameter Binding in ASP.NET Web API(参数绑定) 导航 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html. 本文主要来讲解以下内容: 〇.前言 Ⅰ.Using[FromUri] Ⅱ.Using[FromBody] Ⅲ.Type Converters Ⅳ.Model Binders Ⅴ.Value Providers Ⅵ.HttpParamete…
ASP.NET Web API中的JSON和XML序列化 前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html 本文描述ASP.NET Web API中的JSON和XML格式化器. 在ASP.NET Web API中,媒体类型格式化器(Media-type Formatter)是一种能够做以下工作的对象: 从HTTP消息体读取CLR(公共语言运行时)对象 将CLR对象写入HTT…
上一篇我们剖析了Asp.Net路由系统,今天我们再来简单剖析一下Asp.Net Web API以WebHost方式部署时,Asp.Net Web API的路由系统内部是怎样实现的.还是以一个简单实例开头. 创建一个空的WebApi项目,在Global中注册路由信息: public class WebApiApplication : System.Web.HttpApplication { protected void Application_Start() { //注册路由 GlobalConf…
在ASP.NET Web API中,路由是基于HTTP协议 GET请求路由到以GET开头的控制器方法,POST请求路由到以POST开头的控制器方法中,GET方法和GetProducts,都能与GET请求匹配. 注册路由和定义: ASP.NET WebAPI路由在 ~/App_Start/WebApiConfig.cs 文件中定义. Register方法在Global.asax.cs的应用程序中调用:GlobalConfiguration.Configure(WebApiConfing.Regis…
问题 怎么样将 Asp.Net Web Api 加入到 Asp.Net Web From 应用程序中 解决方案 在 Visual Studio 2013 中,创建新的 Web From,可以直接在"新建 ASP.NET 项目" 创建项目向导中,勾选ASP.NET Web API ,将其加入进来.如图 1-2 所示. 图 1-2. 在Asp.NET 项目向导,同时选中 Web Form 和 Web API 因为可以通过 NuGet 添加 ASP.NET Web API ,所以使用“Ins…