2016-01-22 2 views
0

В контроллере WEB API у нас есть одно и то же имя метода с различными HTTP-глаголами, такими как HTTPGET/HTTPPOST и т. Д. Если да, можете ли вы рассказать о том, какая конфигурация требуется в RouteConfig. (У меня есть угловое приложение Front end, пытающееся вызвать эти методы)Имя одного и того же метода в контроллере Web API

Вот пример.

[HttpGet] 
     public string Test() 
     { 
      return "Success"; 
     } 


[HttpPost] 
     public string Test() 
     { 
      return "Success"; 
     } 

Вот мой routeconfig

config.Routes.MapHttpRoute("DefaultApiWithId", "Api/{controller}/{id}", new { id = RouteParameter.Optional }, new { id = @"\d+" }); 
config.Routes.MapHttpRoute("DefaultApiWithAction", "Api/{controller}/{action}"); 
+0

Посмотрите на атрибут «Маршрут». –

ответ

0

Вы не можете иметь методы с теми же подписями, определенными в одном классе. Компилятор не позволит вам это сделать! Однако зачем вам это нужно? Если операция POST, вам нужно каким-то образом получить данные, которые публикует браузер/клиент.

[HttpPost] 
public string Test(string data) 
{ 
     return "Success"; 
} 

Если нет данных для публикации, просто выполните простой способ получить другой метод.

+0

Спасибо, ответ. Да, вы правы, допустим, что у нас есть метод post с разными параметрами .. можем ли мы работать с API? get метод без каких-либо входных параметров, а Post с параметром ввода и именем метода одинаково? – Naga

2

В контроллере WEB API, мы можем иметь такое же имя метода с различных HTTP глаголов, как HttpGet/HttpPost и т.д.

Я хочу перефразировать это:

Могу ли я сделать GET и POST на тот же Url и обработали соответственно.

Да. Вы можете использовать атрибут Route для обоих методов управления api для обработки того же Url, один для GET и другой для POST, украшенный соответствующими атрибутами HttpGet и HttpPost.

[HttpGet] 
[Route("api/mymethod")] 
public string SomeMethod() 
{ 
    return "from somemethod - get"; 
} 
[HttpPost] 
[Route("api/mymethod")] 
public string SomeAnotherMethod() 
{ 
    return "from some another method - post"; 
} 
0

Вы можете добавить два метода с различными параметрами.

[HttpPost] 
public string Test(string data) 
{ 
     return "Success"; 
} 

[HttpGet] 
public string Test() 
{ 
     return "Success"; 
} 

Надеюсь, это то, что вы ищете.

Смежные вопросы