global.asax.csファイルに次のようなルートを設定しています。
routes.MapHttpRoute(
name: "ColorsRoute",
routeTemplate: "api/{controller}/{action}/{styleId}",
defaults: new
{
controller = "Cars",
action = "Colors"
}
);
コントローラー:
public Dictionary<string, string> Colors(string styleid)
{
//returns a dictionary of colors and ids
}
問題は、次のようなURLを使用する場合です。
localhost:58645/api/cars/colors/18752867
styleIdを取得しませんが、従来は次のように使用して機能します。
localhost:58645/api/cars/colors?styleid=18752867
なぜこれが起こっているのかについてのアイデアはありますか?
アップデート:
これらのルートは、「domain.com/api/cars/makes/new」のような呼び出しで正常に機能しています。
routes.MapHttpRoute(
name: "MakesRoute",
routeTemplate: "api/{controller}/{action}/{state}",
defaults: new
{
controller = "Cars",
action = "Makes"
}
);
コントローラ:
public Dictionary<string, string> Makes(string state)
{
//return dictionary of makes and ids
}
これが私が持っている追加のルートです:
routes.MapHttpRoute(
name: "ModelsRoute",
routeTemplate: "api/{controller}/{action}/{make}/{state}",
defaults: new
{
controller = "Cars",
action = "Models"
}
);
routes.MapHttpRoute(
name: "YearsRoute",
routeTemplate: "api/{controller}/{action}/{modelId}/{state}",
defaults: new {
controller = "Cars",
action = "Years"
}
);
routes.MapHttpRoute(
name: "StylesRoute",
routeTemplate: "api/{controller}/{action}/{make}/{model}/{year}",
defaults: new {
controller = "Cars",
action = "Styles"
}
);