我想要两个不同的 GET 操作来查询数据,名称和 ID,
我有这些路线:
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
'工作正常
谁能解释这种行为以及我做错了什么?