Я создаю приложение angularJS с бэкэндом asp.net webapi. В моем файле routeeconfig у меня есть этоНастройка маршрутов asp.net webapi
routes.MapRoute(
name: "default",
url: "{*url}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Это прекрасно работает. Любой Url, который вызывается, возвращает представление Home/Index (единственное представление, которое у меня есть), и angularJS работает, если есть запрос и работает, какое состояние отображается.
У меня есть базовые методы Get, Put, Post и Delete в моем WebApi, и я могу назвать их точными. Примерами являются
public class CompanyController : ApiController
{
private CompanyService _service;
public CompanyController(CompanyService service)
{
_service = service;
}
public async Task<IHttpActionResult> Get()
{
...
return Ok(model);
}
public async Task<IHttpActionResult> Get(int id)
{
...
return Ok(model);
}
public async Task<IHttpActionResult> Post(CompanyModel model)
{
...
return Ok();
}
public async Task<IHttpActionResult> Put(Company model)
{
...
return Ok();
}
public async Task<IHttpActionResult> Delete(CompanyModel model)
{
...
return Ok();
}
}
Теперь я хотел бы добавить еще один метод к моему апи, где пользователь может загружать компании, но и пройти в срок для поиска (строки), PAGESIZE (целое) и страницы число (int). Что-то вроде этого
public async Task<IHttpActionResult> Get(string term, int page, int pageSize) {
...
return Ok(results);
}
Теперь я понимаю, что мне нужно добавить еще один маршрут, чтобы убедиться, что этот метод можно назвать. Отлично, поэтому я добавляю это в свой RouteConfig.
// search
routes.MapRoute(
name: "search",
url: "api/{controller}/{page}/{pageSize}/{term}",
defaults: new { page = @"\d+", pageSize = @"\d+", term = UrlParameter.Optional }
);
Почему это не работает? Я получил ресурс, который не может быть найден при попытке называть его через почтальон, используя URL-адрес localhost/api/company/1/10/a, где 1 = страница, 10 = pageSize и a = термин
Возможно, простой ответ, но новый для MVC, который до сих пор учится.
Использовать атрибут маршрута, если вы работаете с веб-API 2. http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api -2 –