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

webapiparams_01

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

 

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>

 

webapiparams_03

 

 

数组和列表(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}]

webapiparams_05_json

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>

 

webapiparams_04_xml

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

 

 

 

转载于:https://www.cnblogs.com/chaoshenzhu/p/7357847.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值