Asp.net web api 如何添加Web API路由以在不同字段上进行筛选
我正在尝试向MyC4WebAPI应用程序添加一个路由,该路由将根据CompID字段的值而不是EntryID表的主键返回记录 我当前的ResultsController是作为新的scaffold项构建的,因此默认的get是:Asp.net web api 如何添加Web API路由以在不同字段上进行筛选,asp.net-web-api,routes,Asp.net Web Api,Routes,我正在尝试向MyC4WebAPI应用程序添加一个路由,该路由将根据CompID字段的值而不是EntryID表的主键返回记录 我当前的ResultsController是作为新的scaffold项构建的,因此默认的get是: // GET: api/Results public IQueryable<PlayerEntry> GetPlayerEntries() { return db.PlayerEntries; } // GET:
// GET: api/Results
public IQueryable<PlayerEntry> GetPlayerEntries()
{
return db.PlayerEntries;
}
// GET: api/Results/5
[ResponseType(typeof(PlayerEntry))]
public IHttpActionResult GetPlayerEntry(int id)
{
PlayerEntry playerEntry = db.PlayerEntries.Find(id);
if (playerEntry == null)
{
return NotFound();
}
return Ok(playerEntry);
}
// GET: api/Results/CompID
[ResponseType(typeof(PlayerEntry))]
public IHttpActionResult PlayerEntryByCompID(int CompID)
{
PlayerEntry playerEntry = db.PlayerEntries.Find(CompID);
if (playerEntry == null)
{
return NotFound();
}
return Ok(playerEntry);
}
我是否可以简单地添加其中一个,使我能够使用/api/results/compid/1000行的路由?您需要使用属性路由,以便支持新方法。相反,操作选择器将无法在操作之间进行选择 属性可以是这样的:
[Route("api/results/compid/{id}")]
但是,您需要注册属性路由,并了解您正在执行的操作,因此,请阅读Microsoft的属性路由文档:
注意:也有其他方法,比如用不同的名称命名参数,在查询字符串中提供命名参数,或者创建需要操作名称的路由,但是建议的解决方案最适合您的情况