2017-08-03 3 views
0

にPOST動詞を受け入れますすべてのコントローラメソッドにHttpPost属性を入れる必要はありませんか?のWeb APIはいつものようなルーティングアクション名を持つコントローラメソッド

私のような何かを行うに期待していた:デフォルトの動詞はそれを一致するなど、削除、メソッド名は、取得などの動詞で始まる場合

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

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

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

答えて

2

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

代わりのを。メソッド名の先頭が動詞と一致しない場合、webapiのデフォルトはHttpPostになります。したがって、コントローラメソッドの名前を変更して[HttpPost]属性を置くのを避けることができます。

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

関連する問題