Несколько маршрутов для запроса HTTP POST в одном контроллере API в c # - PullRequest
0 голосов
/ 30 мая 2018

Я реализую внутренний контроллер, в котором два http-запроса используют два независимых маршрута (routea и routeb), используя два разных действия:

Например:

http://some_domain/api/work/routea

http://some_domain/api/work/routeb

Вот как сконфигурирован контроллер:

    var config = new HttpConfiguration();

    config.Routes.MapHttpRoute(
        name: "ControllerAndAction",
        routeTemplate: "api/work/{controller}");

Вот реализация контроллера:

[RoutePrefix("api/work")]    
public class MyController : ApiController
{
        [HttpPost]
        [Route("routea")]
        public HttpResponseMessage RouteA(HttpRequestMessage request)
        {...}

        [HttpPost]
        [Route("routeb")]
        public HttpResponseMessage RouteB()
        {...}

}

Кажется, я не могуначать выполнять функции.С другой стороны, если два вызова сохраняются в отдельном контроллере (например, AController.cs и BController.cs) - все работает.Мне нужно, чтобы оба маршрута были в одном и том же классе контроллеров.Что здесь не так?

1 Ответ

0 голосов
/ 30 мая 2018

Если вы используете такую ​​конструкцию для определения конфигурации базового маршрута, то вы можете использовать ваши "routea" и "routeb" только в качестве имен контроллера.

routeTemplate: "api/work/{controller}");

попробуйте вместо этого:

routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }

В этом случае все должно быть хорошо с реализацией вашего контроллера.

...