1 つのコントローラーに複数の POST メソッドを持つコントローラーを実装しようとしています。私は次のものを持っています:
public class PatientController : ApiController
{
[HttpGet]
public IEnumerable<Patient> All() { ... }
[HttpGet]
public Patient ByIndex(int index) { ... }
[HttpPost]
public HttpResponseMessage Add([FromBody]Patient patient) { ... }
}
そして、私は私のルーティングにこれを持っています:
GlobalConfiguration.Configuration.Routes.MapHttpRoute(
"API_1",
"{controller}/{index}",
new { index = RouteParameter.Optional });
すべてが期待どおりに機能します:)
ここで、次のアクションを追加したいと思います。
[HttpPost, ActionName("save")]
public void Save(int not_used = -1) { ... }
ルーティングに何も追加しないと、Fiddler に次のエラーが表示されます: 要求に一致する複数のアクションが見つかりました。
これをルーティングに追加した場合 (2 番目または 1 番目として、問題ではありません):
GlobalConfiguration.Configuration.Routes.MapHttpRoute(
"API_2",
"{controller}/{action}/{not_used}",
new { not_used = RouteParameter.Optional },
new { action = "save|reset" }); // Action must be either save or reset
Fiddler でも同じエラーが発生します。
これは可能ですか?1 つのコントローラーで、異なる (タイプ) パラメーターを持つ複数の POST を使用できますか?