Я использую веб-интерфейс для списка сказок, и я хочу сделать это:Asp.Net Mvc Web Api маршрутизация вопрос
- Список GetAllTales() = апите/сказки/
- Tale GetTale (интермедиат идентификатор) = апи/сказки/1
- Список GetAllTalesByCategory (строка CategoryName) = API/рассказы/дети
- Tale GetTalesByCategoryAndId (строка CategoryName, внутр идентификатор) = API/байки/дети/1
я nt знать, что может это сделать или что я могу изменить в конфигурации маршрута?
Мои TalesController: ApiController
public IEnumerable<Tale> GetAllTales()
{
return TaleService.FindAllTale();
}
public IEnumerable<Tale> GetAllTalesByCategory(string categoryName){}
public Tale GetTale(int id)
{
Tale item = TaleService.FindByTaleId(id);
if (item == null)
{
throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound));
}
return item;
}
Его мой WebApiConfig
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional },
constraints: new { id = @"^[0-9]+$" }
);
config.Routes.MapHttpRoute(
name: "ApiByName",
routeTemplate: "api/{controller}/{name}",
defaults: null,
constraints: new { name = @"^[a-z]+$" }
);
Некоторые примеры для своей цели: http://www.bbc.com/news/ - http://www.bbc.co.uk/news/technology/
Спасибо за ответ. Я получил его, и я меняю свой код, но если я пишу «/ api/tales/kids», этот запрос использует GetTale (int id). И я не использовал [ActionName] с функцией GetAllTalesByCategory. Потому что у этой функции много чего (развлечение ...). Думаю, мне приходится писать diffirent MapRoute. – BerdaN
см. Мое редактирование, у него есть вопрос SO, который поможет вам создать несколько маршрутов. –
Я вижу и пробую что-то подобное, но снова я этого не делал. Поэтому я немного изменил свой вопрос. Теперь это более понятно. – BerdaN