Настройка маршрутов в web api (asp.net, c#)

В web api контроллере можно создавать методы Get, Post, Put, Delete которые соответствуют запросам по названию. Это позволяет обращаться к этим методам посредством только наименования контроллера. А если создать другие методы (например GetSomething, DeleteSomething или PerformSomething), то будут конфликты при обращении к этим методам. Настроим маршруты так чтоб не было никаких конфликтов.

context.Routes.MapHttpRoute(
    name: "ApiAction",
    routeTemplate: "api/{controller}/{action}/{recordId}",
    defaults: new { recordId = RouteParameter.Optional },
    constraints: new
    {
        action = new RegexRouteConstraint(@"(Get|Post|Put|Delete).+|[a-zA-Z]+[a-zA-Z0-9]*")
    }
);
context.Routes.MapHttpRoute(
    name: "ApiGet",
    routeTemplate: "api/{controller}/{recordId}",
    defaults: new { action = "Get", recordId = RouteParameter.Optional },
    constraints: new { httpMethod = new HttpMethodConstraint("GET") }
);
context.Routes.MapHttpRoute(
    name: "ApiPost",
    routeTemplate: "api/{controller}/{recordId}",
    defaults: new { action = "Post", recordId = RouteParameter.Optional },
    constraints: new { httpMethod = new HttpMethodConstraint("POST") }
);
context.Routes.MapHttpRoute(
    name: "ApiPut",
    routeTemplate: "api/{controller}/{recordId}",
    defaults: new { action = "Put", recordId = RouteParameter.Optional },
    constraints: new { httpMethod = new HttpMethodConstraint("PUT") }
);
context.Routes.MapHttpRoute(
    name: "ApiDelete",
    routeTemplate: "api/{controller}/{recordId}",
    defaults: new { action = "Delete", recordId = RouteParameter.Optional   },
    constraints: new { httpMethod = new HttpMethodConstraint("DELETE") }
);

Теперь в контроллере могут совместно существовать методы Get, Post, Put, Delete, GetSomething, DeleteSomething и PerformSomething

По теме:
Выполняем get запрос по расписанию c#

Напишем простенькую программу, которая будет выполнять get запрос по истечению определенного интервала времени. class Program { private static Timer _timer; Read more

Выполняем действие по расписанию (asp.net, c#)

Раньше я писал программку, которая выполняла get запрос по расписанию, но так же можно написать обычный HttpModule, который будет делать Read more

Выбираем технологии и инструменты для разработки веб приложений

1 Выбор и настройка инструментов для разработки фронтенда (только самые важные): 1.1 Twitter bootstrap — фреймворк позволяет писать качественную верстку Read more

Делаем водяной знак на картинке (c#, .net)

Нанесем несколько раз картинку watermark на другую картинку. public void DrawWatermark(string watermarkImagePath, System.Drawing.Image image) { using (System.Drawing.Image watermarkImage = System.Drawing.Image.FromFile(watermarkImagePath)) Read more

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *