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}
 ]
]

最新文章

  1. 【Tomcat 6.0官方文档翻译】—— 简介
  2. 010editor 破解 扩展
  3. [原创]AD9212采样方法
  4. 滚珠菜单动效-b
  5. jetty属性
  6. 使用Horner法则计算多项式的值
  7. 用lsb_release -a 查看linux版本
  8. html+css手记
  9. Windows下使用OpenSSL生成自签证书
  10. (七) UVC框架分析
  11. RF:win10跑用例过程中有中文日志会显示非中文
  12. sql数据库之多库查询
  13. 模板】AC自动机(简单版)
  14. YII2中添加自定义模块
  15. linux内核分析 第五周读书笔记
  16. union和union all的并集(相加)区别
  17. Phpstorm Alt+Enter 自动导入类
  18. delphi webbrowser 常用方法示例
  19. USACO08MAR土地购买 与 APIO2010特别行动队
  20. [USACO09MAR]Look Up

热门文章

  1. javacript 组合使用构造函数模式和原型模式
  2. 通过traceroute追踪并打印成图片
  3. grep运用
  4. [UWP]合体姿势不对的HeaderedContentControl
  5. [DeeplearningAI笔记]ML strategy_2_1误差分析
  6. jquery中ajax跨域提交的时候会有2次请求
  7. python生成随机图形验证码
  8. 洛谷 [P2024] 食物链
  9. BZOJ 3998: [TJOI2015]弦论 [后缀自动机 DP]
  10. 小甲鱼OD学习第8讲