同じ変数名のデータ型に基づいて、コントローラーでエンドポイントを拡張したいと考えています。たとえば、メソッド A は int を受け取り、メソッド B は文字列を受け取ります。新しいルートを宣言するのではなく、ルーティング メカニズムで int と文字列を区別する必要があります。これが私の言いたいことの例です。
「ApiControllers」のセットアップ:
public class BaseApiController: ApiController
{
[HttpGet]
[Route("{controller}/{id:int}")]
public HttpResponseMessage GetEntity(int id){}
}
public class StringBaseApiController: BaseApiController
{
[HttpGet]
[Route("{controller}/{id:string}")]
public HttpResponseMessage GetEntity(string id){}
}
「WebApionfig.cs」には、次のルートが追加されています。
config.Routes.MapHttpRoute(
"DefaultApi",
"{controller}/{id}",
new { id = RouteParameter.Optional }
);
"http://controller/1"
呼び出して結果を取得したい"http://controller/one"
。代わりに、複数ルートの例外が表示されます。