2017-05-09 6 views
1

私は最近、asp.net web apiコントローラの使用を開始しました。apiコントローラは、どのメソッドをアノテーションなしで呼び出すかを知っています

私はAJAXを経由してこれらのコントローラメソッドを呼び出すが、私はEFを使用してWeb APIコントローラを作成したときに、デフォルトでは、コントローラのメソッドのどれもが同じようにそれら上記の属性がありませんでした:

  • [HttpGet]
  • [HttpPost]
  • [HttpPut]
  • [HttpDelete]

は、代わりに、彼らはすべてのそれらの上にこれを持っている:(

  • GetModelName()
  • PostModelName:

    [ResponseType(typeof(ModelName))]

    ただし、コントローラのメソッド名のようなメソッドの名前でこれらの注釈を持っていました)

  • PutModelName()
  • DeleteModelName()

したがって、メソッドの型を 'Delete'という名前の私のajax呼び出しに置くと、そこに 'Delete'という単語が含まれているメソッド名によって何らかの名前が認識されますか?もしそうでなければ、どのメソッドを呼び出すべきか、APIの上にある属性がなければ、どのようにしてAPIコントローラがそのメソッドを知っていますか?

答えて

3

アクションを見つけるには、Web APIはHTTPメソッドを見て、その後、名前が始まるというHTTPメソッド名を持つ

だから、アクションを探します基本的に慣例に基づいています。

2

はい。 Microsoft documentationから:

アクションを検索するには、ウェブAPIは、HTTPメソッドを見て、その後、名前がそのHTTPメソッド名で始まるアクションの を探します。 の例では、GETリクエストを使用して、Web APIは "GetContact"や "GetAllContacts"のように "Get ..."で を開始するアクションを探します。この の規則は、GET、POST、PUT、およびDELETEメソッドにのみ適用されます。コントローラ上の属性を使用して、 他のHTTPメソッドを有効にすることができます。 documentationから

関連する問題