一、测试Web API

a)测试Web API可以用来检测请求和返回数据是否正常,可以使用Fiddler、Postman等工具。以Fiddler为例,这是一个http协议调试代理工具,它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据。

b)Fiddler会默认捕获所有进程的通信,可以在All Processes中Hide All然后在Composer-Parsed选项卡选择需要捕获的请求类型。在Inspectors标签可以查看捕获请求的信息内容。

二、Web API Controller

a)Web API Controller类似于MVC的Controller,命名也是以“Controller”结尾,但要继承自System.Web.Http.ApiController类,Controller内的方法为操作方法。

b)HTTP动词包括读取记录GET、插入新记录POST、修改记录PUT、修改部分记录PATCH、删除记录DELETE几种。操作方法的命名可以与HTTP动词名相同,也可以用HTTP动词开头。如果需要使用其它名称,则应在方法头部添加[HttpPost]之类的Attribute。

c)Web API总体的请求/响应管道为:

d)Web API控制器与MVC控制器的区别

三、配置Web API

a)Web API采用基于代码的配置方式,而不是Web.config文件。在WebApiConfig.cs可以配置Web API来定制Web API托管基础设施和组件的行为如路由、格式器,过滤器,DependencyResolver,messagehandlerParamterBindingRules、属性、服务等。

b)Application_Start方法调用GlobalConfiguration.Configure时,将WebApiConfig.Register作为回调方法传入,WebApiConfig.Register()方法包含一个类型为 HttpConfiguration的参数,该参数用于用于配置Web API。HttpConfiguration类包括以下属性,通过它可以覆盖默认的Web API的行为:

四、Web API路由

WebAPI支持两种类型的路由,基于约定的路由和基于属性的路由。

a)   基于约定的路由

使用模板来确定某个请求由哪个控制器和操作方法执行,至少应有一个路由模板必须添加到路由表。WebApiConfig.cs类中,config.Routes是一个路由表或HttpRouteCollection类型的集合,MapHttpRoute扩展方法在内部创建一个新的IHttpRoute实例,并将其添加到HttpRouteCollection中,也可以创建一个新的路由并手动添加到集合

还可以为HttpConfiguration配置多个路由,传入的请求会依次与这些路由匹配。

b)   基于属性的路由

WebAPI 2开始支持Attribute路由,首先要在WebApiConfig.cs类中设置config.MapHttpAttributeRoutes()已启用基于属性的路由,然后使用Route标签来配置。

五、参数绑定

a)操作方法可以有一个或多个不同类型的参数。它可以是原始类型或复杂类型。原始类型是指int, bool, double, string, GUID, DateTime, decimal或任何其他可以从字符串类型转换的类型。Web API会根据URL的查询字符串或请求主体中参数类型来绑定操作方法的参数。默认情况下,如果参数类型为原始类型,则会从query string中获取,如果复杂类型,则从请求主体(Request Body)中获取。

b)参数可以有多个,且不区分大小写,对参数的先后顺序也没有要求,uri中可以有多余的参数,但不可以缺少参数。

c)复杂类型参数

例如将Student作为参数,然后用fiddler模拟请求

请求头要设置Content-Type:application/json,否则无法解析。另外,文章中说Get方法不能有复杂参数,但在fiddler中试了是可以的,API端也能正确响应。

d)FromURI与FromBody

默认从query string中获取原始类型,从Request Body中获取复杂类型,但通过FromURI与FromBody这两个用于参数的Attribute可以设置参数匹配规则,为简单类型添加FormBody特性后,Web API将从Request Body匹配id。

学习资料:www.yuanjiaocheng.net (猿教程) 作者:卿文刚

WebAPI路由、参数绑定的更多相关文章

  1. ASP.NET WebAPI 05 参数绑定

    ParameterBindingAttribute 在上一篇中重点讲了ModelBinderAttribute的使用场景.这一篇详细的讲一下ModelBinder背后的参数绑定原理. ModelBin ...

  2. WebAPI 2参数绑定方法

    简单类型参数 Example 1: Sending a simple parameter in the Url [RoutePrefix("api/values")] public ...

  3. WebApi 参数绑定方法

    WebAPI 2参数绑定方法   简单类型参数 Example 1: Sending a simple parameter in the Url 01 02 03 04 05 06 07 08 09 ...

  4. [译]WebAPI下的如何实现参数绑定

    本文将概述在WebAPI方式下将如何将参数绑定到一个action方法,包括参数是如何被读取,一系列规则决定特定环境采用的那种绑定方式,文章最后将给出一些实际的例子. Parameter binding ...

  5. 使用ASP.Net WebAPI构建REST服务(四)——参数绑定

    默认绑定方式 WebAPI把参数分成了简单类型和复杂类型: 简单类型主要包括CLR的primitive types,(int.double.bool等),系统内置的几个strcut类型(TimeSpa ...

  6. webapi简介及参数绑定

    介绍:WebAPI用来开发系统间接口的技术,基于HTTP协议,返回默认是json格式.比wcf简单 更通用,更轻量级,更省流量(json格式):WebAPI尽可能复用MVC路由.ModelBinder ...

  7. WebAPI下的如何实现参数绑定

    本文将概述在WebAPI方式下将如何将参数绑定到一个action方法,包括参数是如何被读取,一系列规则决定特定环境采用的那种绑定方式,文章最后将给出一些实际的例子. Parameter binding ...

  8. Laravel之路由 Route::get/post/any、路由参数、过滤器、命名、子域名、前缀、与模型绑定、抛出 404 错误、控制器

    基本路由 应用中的大多数路都会定义在 app/routes.php 文件中.最简单的Laravel路由由URI和闭包回调函数组成. 基本 GET 路由 代码如下: Route::get('/', fu ...

  9. asp.net webapi 参数绑定总结

    首先必须得更正下自己一直以来对于get请求和post请求理解的一个误区:get请求只能通过url传参,post请求只能通过body传参. 其实上面的理解是错误的,翻阅了不少资料及具体实践,正确理解应该 ...

随机推荐

  1. MyBatis 分页之拦截器实现

    分页是WEB程序中常见的功能,mybatis分页实现与hibernate不同,相比hibernate,mybatis实现分页更为麻烦.mybatis实现分页需要自己编写(非逻辑分页RowBounds) ...

  2. Ubuntu中root的默认密码

    原文地址:http://www.cnblogs.com/xuyingying/archive/2008/10/16/1312584.html 安装完Ubuntu后忽然意识到没有设 置root密码,不知 ...

  3. 搭建oracle linux虚拟机报错解决

    sysctl -P 报错解决办法问题症状修改 linux 内核文件 #vi /etc/sysctl.conf后执行sysctl  -P 报错error: "net.bridge.bridge ...

  4. sip (db33)信令交互-视频点播与回播

    请求视频流: INVITE sip:@ SIP/2.0 Via: SIP/;rport;branch=z9hG4bK178329191 From: <sip:@>;tag= To: < ...

  5. Spring之Bean的注入

    Bean的配置中介绍的是Bean声明问题,在哪声明怎么声明的问题.Bean的注入是怎么实例化,怎么注入的问题.Bean注入的方式有两种,一种是在XML中配置,另一种则是使用注解的方式注入. 一.XML ...

  6. 数字证书及CA介绍

    数字证书及CA介绍 作者: 编程随想  发布时间: 2013-12-03 11:48  阅读: 95280 次  推荐: 69   原文链接   [收藏]   ★ 先说一个通俗的例子 考虑到证书体系的 ...

  7. R语言实战(三)——模拟随机游走数据

    一.模拟随机游走数据示例 x <- matrix(0,1000,1) for(i in 1:1000){ x[i+1] <- x[i]+rnorm(1) } plot(x,type=&qu ...

  8. c# 对html字符串进行编码

    /// <summary> /// 对html字符串进行编码 /// </summary> /// <param name="html">htm ...

  9. 一款非常好用的万能本地离线激活工具,支持Office2016、Office2015、Win7、Win8/8.1/10、Win2008/2012/R2系统,全自动安装且无需联网状态即可全部激活,它由国外网友heldigard制作,小巧、简单,只需运行而不用去管它自动激活,能自动激活为180天无限循环,欢迎大家下载使用

    office2016激活工具(KMS)是一款非常好用的万能本地离线激活工具,支持Office2016.Office2015.Win7.Win8/8.1/10.Win2008/2012/R2系统,全自动 ...

  10. [PHP]算法-最大子数组问题思路

    最大子数组问题,股票价格示例: 1.在最高价格开始向左寻找之前的最低价格 2.在最低价格开始向右寻找之后的最高价格 3.暴力求解法,尝试每队可能的买进和卖出组合,保证卖出在买进之后 key buy s ...