Ответ 1
В ASP.NET Web API 2 вы можете использовать атрибутную маршрутизацию, и вам не нужно определять все ваши маршруты таким образом с помощью MapHttpRoute
.
Объяснение можно найти здесь.
В вашем Owin Startup
вы должны включить атрибут маршрутизации с помощью MapHttpAttributeRoutes:
public class Startup
{
public static void Configuration(IAppBuilder app)
{
// Configure Web API for self-host.
HttpConfiguration config = new HttpConfiguration();
// Enable attribute based routing
config.MapHttpAttributeRoutes();
app.UseWebApi(config);
}
}
и ваш контроллер должен выглядеть примерно так:
[RoutePrefix("api/service")]
public class ServicesController : ApiController
{
[HttpGet]
[Route("{location}")]
public IHttpActionResult GetByLocation(string location)
{
return Ok();
}
[HttpGet]
[Route("{instanceId:int}")]
public IHttpActionResult GetByInstanceId(int instanceId)
{
return Ok();
}
}
Как вы можете видеть, я использовал RoutePrefix
для определения конечной точки и ограничений маршрута для ограничения параметров, как предложено в статье. Вы даже можете создавать свои собственные пользовательские ограничения.
В статье предлагается установить пакет NuGet Microsoft.AspNet.WebApi.WebHost
. Это не обязательно aymore.