WebApi v2 представила атрибуты маршрута , которые можно использовать вместе с вашим классом контроллера и могут упростить настройку маршрутизации.
Например:
public class BookController : ApiController{
//where author is a letter(a-Z) with a minimum of 5 character and 10 max.
[Route("html/{id}/{newAuthor:alpha:length(5,10)}")]
public Book Get(int id, string newAuthor){
return new Book() { Title = "SQL Server 2012 id= " + id, Author = "Adrian & " + newAuthor };
}
[Route("json/{id}/{newAuthor:alpha:length(5,10)}/{title}")]
public Book Get(int id, string newAuthor, string title){
return new Book() { Title = "SQL Server 2012 id= " + id, Author = "Adrian & " + newAuthor };
}
...
Однако обратите внимание, что параметры запроса ? Var1 = 1 & var2 = 2 не подлежат оценке, чтобы решить, какой метод API будет использоваться.
WebApi работает на основе отражения, поэтому это означает, что ваши фигурные скобки {vars} должны совпадать с именем в ваших методах.
Поэтому для соответствия чему-то подобному api/Products/Product/test
ваш шаблон должен выглядеть следующим образом "api/{controller}/{action}/{id}"
, и ваш метод должен быть объявлен следующим образом:
[ActionName("Product")]
[HttpGet]
public object Product(string id){
return id;
}
Где параметр string name
былзаменено на string id
.