現在、すべてのコントローラーに対応するために、以下のルーティングルールを使用しています。利点は、各コントローラーの各アクションのルートを定義する必要がないことです。
routes.MapHttpRoute("3", "{controller}/{action}/{arg1}/{arg2}/{arg3}");
routes.MapHttpRoute("2", "{controller}/{action}/{arg1}/{arg2}");
routes.MapHttpRoute("1", "{controller}/{action}/{arg1}");
routes.MapHttpRoute("0", "{controller}/{action}");
ただし、このため、メソッドのパラメーター名は一致する必要があります。そのようです:
// Example method signature
public ResponseDto GetResponse(int arg1, int arg2)
パラメータ名がよりわかりやすい名前に変更された場合(たとえば、あいまいな「arg1」名ではなく、各パラメータの意図を示す名前)、次のようになります。
// Better example method signature
public ResponseDto GetResponse(int userId, int itemId)
次の場合を除いて、バインディングは壊れます。
- ルートとパラメータ名は明示的に定義されています
- 引数はクエリ文字列を使用して渡されます
パラメータの数に基づいて正しいアクションを自動的に使用するようにWebApiルーティングを設定する方法はありますか。パラメータ名ではなく?