, :
- . , URL-, .
- - slash
/ , - , , ,
- , , , ( MVC, )
, URL-, .
, TestController Web API Controller :
[HttpGet]
public object TestAction(int param1, DateTime startDate, DateTime endDate,
int? param2 = null)
{
return new
{
param1 = param1,
param2 = param2,
startDate = startDate,
endDate = endDate
}.ToString();
}
. HTTP GET Web API GetXxx, HTTP POST .. PostXxx. , Controller Action URL, [HttpXxx], HTTP.
, param1 param2 , stardDate endDate :
http://myhost/api/Mycontroller/Myaction/12/22/2014-12-01/2014-12-31
http://myhost/api/Mycontroller/Myaction/22/2014-12-01/2014-12-31
, URL- :
param1 = 12; param2 = 22; startDate = 2014-12-01; endData = 2014-12-31
:
param1 = 12; param2 = null; startDate = 2014-12-01; endData = 2014-12-31
, URL, ..
routeTemplate: "api/{controller}/{action}/{param1}/{param2}/{startDate}/{endDate}"
routeTemplate: "api/{controller}/{action}/{param1}/{startDate}/{endDate}"
, , .. URL- , .
, URL- param2, TestAction . : , :
int? param2 = null ( # , ).- :
defaults: new { param2 = RouteParameter.Optional }
. , , , -API.
. , MVC ,
:
constraint , :
config.Routes.MapHttpRoute(
name: "Multiparam2",
routeTemplate: "api/{controller}/{action}/{param1}/{param2}/{startDate}/{endDate}",
constraints: new
{
startDate = @"20\d\d-[0-1]?\d-[0-3]?\d",
endDate = @"20\d\d-[0-1]?\d-[0-3]?\d"
},
defaults: new object { }
);
, defaults, .
. , 20XX, , , 0x 1x, 0x, 1x, 2x 3x, . , 2012-1-1 2015-12-30, 1920-12-30. .
, (), .
, URL-, , , . ( : ).
, param2 startDate endDate, .
:
[HttpGet]
public object TestAction(int param1, int? param2 = null, DateTime? startDate = null,
DateTime? endDate = null)
{
return new
{
param1 = param1,
param2 = param2,
startDate = startDate,
endDate = endDate
}.ToString();
}
config.Routes.MapHttpRoute(
name: "Multiparam1",
routeTemplate: "api/{controller}/{action}/{param1}/{startDate}/{endDate}",
constraints: new
{
startDate = @"20\d\d-[0-1]?\d-[0-3]?\d",
endDate = @"20\d\d-[0-1]?\d-[0-3]?\d"
},
defaults: new
{
param2 = RouteParameter.Optional,
startDate = RouteParameter.Optional,
endDate = RouteParameter.Optional
}
);
config.Routes.MapHttpRoute(
name: "Multiparam2",
routeTemplate: "api/{controller}/{action}/{param1}/{param2}/{startDate}/{endDate}",
constraints: new
{
startDate = @"(20\d\d-[0-1]?\d-[0-3]?\d)?",
endDate = @"(20\d\d-[0-1]?\d-[0-3]?\d)?"
},
defaults: new
{
startDate = RouteParameter.Optional,
endDate = RouteParameter.Optional
}
);
, :
- , , .
Multiparam2, URL: http://localhost:1179/api/test/testaction/1/2014-12-12/2015-1-1, param1=1; param2="2014-12-12"; startDate="2015-1-1". ( param2, , param2=@"\d+") startDate endDate.
:
, , , , .