名前とIDでデータをクエリする2つの異なるGETアクションが必要です。
私はこれらのルートを持っています:
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "ActionApiByName",
routeTemplate: "api/{controller}/{action}/{name}",
defaults: new { name = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
およびコントローラーでのこれらのアクション:
[HttpGet]
public CompanyModel CompanyId(Guid id)
{
//Do something
}
[HttpGet]
public CompanyModel CompanyName(string name)
{
//Do something
}
次のような呼び出しhttp://localhost:51119/api/companies/CompanyId/3cd97fbc-524e-47cd-836c-d709e94c5e1e
が機能し、「CompanyId」メソッドに到達している間、
同様の呼び出しでhttp://localhost:51119/api/companies/CompanyName/something
404 が見つかりません
しかし、これ: ' http://localhost:51119/api/companies/CompanyName/?name=something
' は正常に動作します
誰でもこの動作を説明できますか?私は何が間違っていますか?