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: FiddlerHost: localhost:49407Content-Length: 32Content-Type: application/x-www-form-urlencodedid1=1&id2=2&id3=3 |
Calling the method using Json in the body
|
01
02
03
04
05
06
|
User-Agent: FiddlerHost: localhost:49407Content-Length: 32Content-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: FiddlerContent-Type: application/xmlHost: localhost:49407Content-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: FiddlerContent-Type: application/jsonHost: localhost:49407Content-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: FiddlerContent-Type: application/xmlHost: localhost:49407Content-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.1User-Agent: FiddlerContent-Type: application/jsonHost: localhost:49407Content-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} ]] |





浙公网安备 33010602011771号