Как написать карту / маршрут для нескольких постов - PullRequest
1 голос
/ 26 марта 2012

Привет! У меня есть API-контроллер, для которого требовалось несколько POST:

один для сохранения / обновления:

public Order PostOrder(Order order)
{

}

И еще один для порядка поиска

public IQueryable<Order> SearchWithParameter(SearchOrderParameter searchParameter)
{

}

Я добавил ниже метод Route в Global.asax

routes.MapHttpRoute(
            name: "SearchWithParameter",
            routeTemplate: "api/{controller}/{action}/{searchParameter}",
            defaults: new { action = "post" }
        );

В Js я называю его следующим образом:

 var SearchOrderParameter = new Object();
 SearchOrderParameter.OrderID = 1197;
 $.ajax({
    url: "http://localhost:9003/api/orders/SearchWithParameter",
    data: SearchOrderParameter,
    type: "Post",
    dataType: "json",
    success: function (value) {
        alert(value);
    },
    error: function (jqXHR, textStatus, errorThrown) {
        alert(textStatus);
    }
 });

Но каждый раз, когда этот метод вызывает PostOrder.Пожалуйста, наставь меня, Что мне не хватает, чтобы оно вызывало SearchWithParameter.

Ответы [ 2 ]

3 голосов
/ 05 апреля 2012

Попробуйте использовать эти маршруты ...

  routes.MapHttpRoute(
            name: "ApiAction",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { id = RouteParameter.Optional },
            constraints: new { action = @"^[A-Za-z]" }
        );

        routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
1 голос
/ 27 марта 2012

По умолчанию операции HTTP отображаются на функцию C #, начиная с имени метода HTTP.Таким образом, HTTP POST будет сопоставлен с методом Post .... (), а не с методом Search .... ().Вы можете добавить атрибут HttpPost, чтобы метод SearchWithParameter () также работал с публикацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...