Как правильно настроить роутинг в WEB API?

376
13 июня 2017, 23:54

Использую ASP.NET MVC5 WEB API

Есть конроллер:

public class StatsController : ApiController
{
    public IEnumerable<StatsModel> Get()
    { }
    public float? Get(string university, string schoolType, string speciality, int year)
    { }
    public void Post([FromBody]StatsModel stat)
    { }
    public void Put(string university, string schoolType, string speciality, short year, [FromBody]StatsInOut newInOut)
    { }
    public void Delete(string university, string schoolType, string speciality, short year)
    { }
}

И роутинг:

config.Routes.MapHttpRoute(
name: "StatsApi",
routeTemplate: "api/{controller}/{university}/{schoolType}/{speciality}/{year}",
defaults: new {university = RouteParameter.Optional, schoolType = RouteParameter.Optional, speciality = RouteParameter.Optional, year = RouteParameter.Optional });

Проблема в том, что если запустить проект и перейти на вкладку API (где собирается документация по методам) куда-то пропали запросы GET (без параметров) и POST, доступны только следующие методы:

GET api/Stats/{university}/{schoolType}/{speciality}/{year} 
PUT api/Stats/{university}/{schoolType}/{speciality}/{year} 
DELETE api/Stats/{university}/{schoolType}/{speciality}/{year}  

Но должны быть еще следующие:

GET api/Stats/
POST api/Stats/

Изначально все работало, но потом мне пришлось в каждый метод добавить переменную speciality и методы магическим образом пропали. Что я изменил не так - понять не могу, гугл ничего не дает.

Как вернуть потерянные методы?

Answer 1

Решил проблему добавив еще один роутинг:

config.Routes.MapHttpRoute(
name: "StatsApi2",
routeTemplate: "api/{controller}/",
defaults: new { university = RouteParameter.Optional, schoolType = RouteParameter.Optional, speciality = RouteParameter.Optional, year = RouteParameter.Optional }
READ ALSO
Добавление компонентов по нажатию

Добавление компонентов по нажатию

Есть идея, но не знаю как реализоватьХочу сделать что-то вроде программы для записок

386
Windows UWP как запретить Pivot передвигать Header&#39;э?

Windows UWP как запретить Pivot передвигать Header'э?

Создал Pivot табами и растянул эти табы по ширине окна, все бы ничего, но когда масштабирую окно эти табы начинают "прыгать", меняться местами(типо...

236
Формирование отчета в Visual Studio

Формирование отчета в Visual Studio

Есть программа для работы с бд, в которой присутствует функция добавления заказаПри добавлении заказа, нужно сформировать чек, который покажет...

476