2017-08-03 4 views
0

Mit einem Aktionsnamen Routing wie akzeptieren:Web Api immer Postverb auf Controller-Methoden

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

Ich möchte, dass alle meine Controller-Methoden die POST Verb akzeptieren, gibt es eine Möglichkeit, die Routenkarte so zu konfigurieren, dass Ich muss kein HttpPost Attribut zu allen Steuerpultmethoden setzen?

Ich hatte gehofft, wie etwas zu tun:

config.Routes.MapHttpRoute(
    name: "ByActionName", 
    verb: "POST" 
    routeTemplate: "api/{controller}/{action}"); 

Statt:

public class MyController: ApiController 
{ 
    [HttpPost] 
    public List<int> GetItems() { ... } 

    [HttpPost] 
    public void DeleteItem(int id) { ... } 

    [HttpPost] 
    public void OtherMethod() { ... } 
} 

Antwort

2

Wenn der Methodenname mit einem Verb wie Get beginnt, Löschen, usw. der Standard Verb wird das Match . Wenn der Anfang des Methodennamens keinem Verb entspricht, verwendet Webapi standardmäßig HttpPost. Sie können also vermeiden, [HttpPost] -Attribute zu setzen, indem Sie Ihre Controller-Methoden umbenennen.

Siehe: Is there a default verb applied to a Web API ApiController method?