Предоставление службы отдыха Web Api без имени контроллера для доступа к его методам - PullRequest
0 голосов
/ 01 октября 2019

У меня есть служба отдыха, разработанная с помощью ASP.NET Web Api. Контроллером в этом примере является MyTestController. В шаблоне маршрута я установил "api/{controller}/{action}/{id}". Он имеет простой метод GET "привет", который возвращает строку. Поэтому, если я попытаюсь вызвать эту службу во время ее работы, я должен выполнить GET http://localhost/api/MyTest/hello. Вместо этого я хотел бы получить возможность называть его GET http://localhost/hello, поэтому удаление части api / controller.

Возможно ли это?

У меня уже естьпопытался установить routeTemplate: "/{action}/{id}", но он, очевидно, не работает.

Это пример службы

  public class MyTestController : ApiController
    {
        [HttpGet]
        public string Hello()
        {
            return "service is online";
        }
}

И это извлечение кода с настройками маршрутизации:

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

1 Ответ

0 голосов
/ 01 октября 2019

Вы можете попробовать что-то вроде этого, ниже

// Register the static hello route
config.Routes.MapHttpRoute(
     name: "HelloRoute",
     routeTemplate: "api/hello",
     defaults: new { controller = "MyTest", action = "Hello" }
);
// If it does not match, then fallback to the generic matcher
config.Routes.MapHttpRoute(
     name: "DefaultApi",
     routeTemplate: "api/{controller}/{action}/{id}",
     defaults: new { id = RouteParameter.Optional }
);

Взгляните на руководство по маршрутизации Microsoft для веб-API , чтобы увидеть, как происходит сопоставление и какие параметры по умолчанию у вас есть.

Имейте в виду, что вы мудро выбираете причину, по которой хотите что-то подобное. В случае остальных API мы хотим иметь такие маршруты, как имя хоста / ресурса / id / подресурса / id

Вы можете прочитать об остальных API (которые основаны на ресурсах) здесь

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