2017-01-10 4 views
0

Основываясь на приведенном ниже коде, я могу позвонить/API/карты и/API/карты/список, но теперь/API/карты/1234567890Web Api контроллер с несколькими POST и отдельных методов PUT

WebApiConfig

config.Routes.MapHttpRoute(_ 
     name:="WithActionAndIdApi", _ 
     routeTemplate:="api/{controller}/{action}/{id}", _ 
     defaults:=New With {.id = RouteParameter.Optional} _ 
    ) 

    config.Routes.MapHttpRoute(_ 
     name:="WithIdApi", _ 
     routeTemplate:="api/{controller}/{id}" _ 
    ) 

    config.Routes.MapHttpRoute(_ 
     name:="DefaultApi", _ 
     routeTemplate:="api/{controller}", _ 
     defaults:=New With {.action = "DefaultAction"} _ 
    ) 

CardsController

<HttpPost()> 
<ActionName("DefaultAction")> 
Public Function PostValue(<FromBody()> ByVal value As Card_POST.Card) As HttpResponseMessage 

<HttpPost()> 
<ActionName("list")> 
Public Function PostValue(<FromBody()> ByVal value As Cards_POST.CardList) As HttpResponseMessage 

<HttpPut()> 
Public Function PutValue(ByVal Id As String, <FromBody()> ByVal value As Card_PUT) As HttpResponseMessage 
+0

, пожалуйста, убедитесь, что вы задали вопрос. Неясно, какая у вас проблема или что вы пытаетесь решить. – chambo

+0

Как вы выполняете запрос PUT? – Mate

+0

@Mate, я решил проблему, изменив свой config.Routes – belltric

ответ

1

Я изменил мои config.Routes в ниже код и он может поддержать мою ситуацию выше.

config.Routes.MapHttpRoute(_ 
     name:="DefaultApiWithId", _ 
     routeTemplate:="api/{controller}/{id}", _ 
     defaults:=New With {.id = RouteParameter.Optional}, _ 
     constraints:=New With {.id = "^\d+$"} _ 
    ) 

    config.Routes.MapHttpRoute(_ 
     name:="DefaultApiWithAction", _ 
     routeTemplate:="api/{controller}/{action}" _ 
    ) 

    config.Routes.MapHttpRoute(_ 
     name:="DefaultApiGet", _ 
     routeTemplate:="api/{controller}/{id}", _ 
     defaults:=New With {.id = RouteParameter.Optional}, _ 
     constraints:=New With {.httpMethod = New HttpMethodConstraint({"GET"})} _ 
    ) 

    config.Routes.MapHttpRoute(_ 
     name:="DefaultApiPost", _ 
     routeTemplate:="api/{controller}", _ 
     defaults:=New With {.action = "DefaultPostAction"}, _ 
     constraints:=New With {.httpMethod = New HttpMethodConstraint({"POST"})} _ 
    ) 

    config.Routes.MapHttpRoute(_ 
     name:="DefaultApiPut", _ 
     routeTemplate:="api/{controller}/{id}", _ 
     defaults:=Nothing, _ 
     constraints:=New With {.httpMethod = New HttpMethodConstraint({"PUT"})} _ 
    ) 
Смежные вопросы