как написать MapRoute mvc4

У меня есть API-контроллер:

public class ExchangesController : ApiController
{
    [HttpGet]
    public List<ExchangesTrade> GetTrades(long tid)
    {

Я хочу иметь возможность вызывать его из браузера, например /api/USD/trades.json?tid=5

Как мне написать «routes.MapRoute» в моем RouteConfig?


person Haddar Macdasi    schedule 15.03.2013    source источник


Ответы (1)


Во-первых, route.MapRoute добавит маршруты для традиционного приложения MVC. Если вы хотите добавить маршруты для своего веб-API, вам нужно добавить маршруты Http с помощью MapHttpRoute в маршруты HttpConfiguration вашего веб-API.

В конфигурации вашего веб-API вы можете добавить расширение сопоставления пути URI следующим образом:

config.Formatters
      .JsonFormatter
      .MediaTypeMappings
      .Add(new UriPathExtensionMapping("json", "application/json"));

Добавьте такой маршрут:

config.Routes.MapHttpRoute(
        name: "ExchangesRouteWithExtensions",
        routeTemplate: "api/USD/{action}.{ext}/{tid}",
        defaults: new { controller = Exchanges, tid = RouteParameter.Optional }
    );

Затем получите доступ к вашей конечной точке следующим образом:

api/USD/trades.json?tid=5
person gdp    schedule 16.03.2013