WebApi 参数绑定方法
WebAPI 2参数绑定方法
简单类型参数
Example 1: Sending a simple parameter in the Url
01
02
03
04
05
06
07
08
09
10
11
|
[RoutePrefix( "api/values" )] public class ValuesController : ApiController { // http://localhost:49407/api/values/example1?id=2 [Route( "example1" )] [HttpGet] public string Get( int id) { return "value" ; } } |
Example 2: Sending simple parameters in the Url
01
02
03
04
05
06
07
|
// http://localhost:49407/api/values/example2?id1=1&id2=2&id3=3 [Route( "example2" )] [HttpGet] public string GetWith3Parameters( int id1, long id2, double id3) { return "value" ; } |
Example 3: Sending simple parameters using attribute routing
01
02
03
04
05
06
07
|
// http://localhost:49407/api/values/example3/2/3/4 [Route( "example3/{id1}/{id2}/{id3}" )] [HttpGet] public string GetWith3ParametersAttributeRouting( int id1, long id2, double id3) { return "value" ; } |
Example 4: Sending an object in the Url
// http://localhost:49407/api/values/example4?id1=1&id2=2&id3=3
[Route("example4")]
[HttpGet]
public string GetWithUri([FromUri] ParamsObject paramsObject)
{
return "value:" + paramsObject.Id1;
}
Example 5: Sending an object in the Request body
[Route("example5")]
[HttpPost]
public string GetWithBody([FromBody] ParamsObject paramsObject)
{
return "value:" + paramsObject.Id1;
}
注意 [FromBody] 只能用一次,多于一次将不能正常工作
Calling the method using Urlencoded in the body:
01
02
03
04
05
06
|
User-Agent: Fiddler Host: localhost:49407 Content-Length: 32 Content-Type: application/x-www-form-urlencoded id1=1&id2=2&id3=3 |
Calling the method using Json in the body
01
02
03
04
05
06
|
User-Agent: Fiddler Host: localhost:49407 Content-Length: 32 Content-Type: application/json { "Id1" : 2, "Id2" : 2, "Id3" : 3} |
Calling the method using XML in the body
This requires extra code in the Global.asax
01
02
03
04
05
06
07
08
09
10
11
12
|
protected void Application_Start() { var xml = GlobalConfiguration.Configuration.Formatters.XmlFormatter; xml.UseXmlSerializer = true ; The client request is as follows: User-Agent: Fiddler Content-Type: application/xml Host: localhost:49407 Content-Length: 65 <ParamsObject><Id1>7</Id1><Id2>8</Id2><Id3>9</Id3></ParamsObject> |
数组和列表(Array,List)
Example 6: Sending a simple list in the Url
01
02
03
04
05
06
07
08
09
10
11
12
|
// http://localhost:49407/api/values/example6?paramsObject=2,paramsObject=4,paramsObject=9 [Route( "example6" )] [HttpGet] public string GetListFromUri([FromUri] List< int > paramsObject) { if (paramsObject != null ) { return "recieved a list with length:" + paramsObject.Count; } return "NOTHING RECIEVED..." ; } |
Example 7: Sending an object list in the Body
01
02
03
04
05
06
07
08
09
10
11
12
|
// http://localhost:49407/api/values/example8 [Route( "example8" )] [HttpPost] public string GetListFromBody([FromBody] List<ParamsObject> paramsList) { if (paramsList != null ) { return "recieved a list with length:" + paramsList.Count; } return "NOTHING RECIEVED..." ; } |
Calling with Json:
01
02
03
04
05
06
|
User-Agent: Fiddler Content-Type: application/json Host: localhost:49407 Content-Length: 91 [{ "Id1" :3, "Id2" :76, "Id3" :19},{ "Id1" :56, "Id2" :87, "Id3" :94},{ "Id1" :976, "Id2" :345, "Id3" :7554}] |
Calling with XML:
01
02
03
04
05
06
07
08
09
10
|
User-Agent: Fiddler Content-Type: application/xml Host: localhost:49407 Content-Length: 258 <ArrayOfParamsObject> <ParamsObject><Id1>3</Id1><Id2>76</Id2><Id3>19</Id3></ParamsObject> <ParamsObject><Id1>56</Id1><Id2>87</Id2><Id3>94</Id3></ParamsObject> <ParamsObject><Id1>976</Id1><Id2>345</Id2><Id3>7554</Id3></ParamsObject> </ArrayOfParamsObject> |
Example 8: Sending object lists in the Body
01
02
03
04
05
06
07
08
09
10
11
|
[Route( "example8" )] [HttpPost] public string GetListsFromBody([FromBody] List<List<ParamsObject>> paramsList) { if (paramsList != null ) { return "recieved a list with length:" + paramsList.Count; } return "NOTHING RECIEVED..." ; } |
This is a little bit different to the previous examples. The body can only send one single object to Web API. Because of this, the lists of objects are wrapped in a list or a parent object.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
POST http: //localhost:49407/api/values/example8 HTTP/1.1 User-Agent: Fiddler Content-Type: application/json Host: localhost:49407 Content-Length: 185 [ [ { "Id1" :3, "Id2" :76, "Id3" :19}, { "Id1" :56, "Id2" :87, "Id3" :94}, { "Id1" :976, "Id2" :345, "Id3" :7554} ], [ { "Id1" :3, "Id2" :76, "Id3" :19}, { "Id1" :56, "Id2" :87, "Id3" :94}, { "Id1" :976, "Id2" :345, "Id3" :7554} ] ] |
WebApi 参数绑定方法的更多相关文章
- asp.net webapi 参数绑定总结
首先必须得更正下自己一直以来对于get请求和post请求理解的一个误区:get请求只能通过url传参,post请求只能通过body传参. 其实上面的理解是错误的,翻阅了不少资料及具体实践,正确理解应该 ...
- asp.net webapi参数绑定
content={"content": [{"comb_id": "100323","comb_name": " ...
- WebAPI 2参数绑定方法
简单类型参数 Example 1: Sending a simple parameter in the Url [RoutePrefix("api/values")] public ...
- .net core webapi参数绑定处理
在 Startup的ConfigureServices方法中添加: services.Configure<ApiBehaviorOptions>(options => { optio ...
- springMVC使用HandlerMethodArgumentResolver 自定义解析器实现请求参数绑定方法参数
http://blog.csdn.net/truong/article/details/30971317 http://blog.csdn.net/fytain/article/details/439 ...
- webapi简介及参数绑定
介绍:WebAPI用来开发系统间接口的技术,基于HTTP协议,返回默认是json格式.比wcf简单 更通用,更轻量级,更省流量(json格式):WebAPI尽可能复用MVC路由.ModelBinder ...
- SpringMVC-简单参数绑定
SpringMVC-简单参数绑定 众所周知,springmvc是用来处理页面的一些请求,然后将数据再通过视图返回给用户的,前面的几篇博文中使用的都是静态数据,为了能快速入门springmvc,在 ...
- WebAPI下的如何实现参数绑定
本文将概述在WebAPI方式下将如何将参数绑定到一个action方法,包括参数是如何被读取,一系列规则决定特定环境采用的那种绑定方式,文章最后将给出一些实际的例子. Parameter binding ...
- [译]WebAPI下的如何实现参数绑定
本文将概述在WebAPI方式下将如何将参数绑定到一个action方法,包括参数是如何被读取,一系列规则决定特定环境采用的那种绑定方式,文章最后将给出一些实际的例子. Parameter binding ...
随机推荐
- C++ concurrency in action 读随记1
翻了翻,感觉标准库支持的并发应该是kernel level 的(书里也没有明确写,不过他写了诸如"操作系统来安排""需要知道硬件支持多少线程"等等话语,所以猜测 ...
- pwd 的“P”选项
1.目录是链接目录时,pwd -P 显示出实际路径,而非使用连接(link)路径:pwd显示的是连接路径 例: [root@localhost soft]# cd /etc/init.d [root ...
- malloc,calloc,realloc,alloc
三个函数的申明分别是: void* realloc(void* ptr, unsigned newsize); void* malloc(unsigned size); void* calloc(si ...
- python--关于赋值与深浅拷贝的认识
作为一个自学python的小白,平时用到深浅拷贝的机会很少,因此对其也是一知半解.但是,作为一个立志成为后端工程狮的男人,眼里揉不了沙子,于是专门花时间补了补课,在此记录一下学习心得. 在讲深浅 ...
- MOBA服务器开发第一阶段完成总结
开发历程 项目是从8月20日左右开始开发的,到今天一个月不到吧. 除了底层库和服务器架构外我们大致开发了5个服务器为: 一 ) . 战斗服务器 二 ) . 匹配服务器 三 ) . 验证服务器 四 ) ...
- BZOJ 3091: 城市旅行 [LCT splay 期望]
3091: 城市旅行 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1454 Solved: 483[Submit][Status][Discuss ...
- POJ1741Tree [点分治]【学习笔记】
Tree Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 20098 Accepted: 6608 Description ...
- WPF 使用DMSkin for WPF 快速搭建漂亮的WPF程序
DMSkin-for-WPF是一个基于WPF的.Net WPF开源界面库,实现了无边框的WPF开发方案,内置部分控件模板. 你可以参照模板自行修改完善.(以下简称DFW). 核心 DFW实现了比较完美 ...
- 实时滚动图表绘制方法: LightningChart教程 + 源码下载
LightningChart图形控件彻底发挥了GPU加速和性能优化的最大效应,能够实时呈现超过10亿数据点的庞大数据,为大家提供先进与快速的图表库.这里的实时图实现的比较简单,大家先试一下这个效果,熟 ...
- My97DatePicker选择两个日期范围不超过30天的demo
需求 ExtJs下使用My97DatePicker对时间范围不超过30天进行选择. 关键点 使用全局变量. 对选择完的第一个日期进行逻辑判断.(我的逻辑能力还有待加强啊) 因为当选择了第一个框范围在超 ...