WebApi 参数绑定方法
2024-10-11 05:58:59
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} ] ] |
最新文章
- 【Tomcat 6.0官方文档翻译】—— 简介
- 010editor 破解 扩展
- [原创]AD9212采样方法
- 滚珠菜单动效-b
- jetty属性
- 使用Horner法则计算多项式的值
- 用lsb_release -a 查看linux版本
- html+css手记
- Windows下使用OpenSSL生成自签证书
- (七) UVC框架分析
- RF:win10跑用例过程中有中文日志会显示非中文
- sql数据库之多库查询
- 模板】AC自动机(简单版)
- YII2中添加自定义模块
- linux内核分析 第五周读书笔记
- union和union all的并集(相加)区别
- Phpstorm Alt+Enter 自动导入类
- delphi webbrowser 常用方法示例
- USACO08MAR土地购买 与 APIO2010特别行动队
- [USACO09MAR]Look Up
热门文章
- javacript 组合使用构造函数模式和原型模式
- 通过traceroute追踪并打印成图片
- grep运用
- [UWP]合体姿势不对的HeaderedContentControl
- [DeeplearningAI笔记]ML strategy_2_1误差分析
- jquery中ajax跨域提交的时候会有2次请求
- python生成随机图形验证码
- 洛谷 [P2024] 食物链
- BZOJ 3998: [TJOI2015]弦论 [后缀自动机 DP]
- 小甲鱼OD学习第8讲