我有一个我正在研究的ASP.NET Web API项目。我有一个名为SpellbookController的APIController,它对EntityFramework存储库有基本的CRUD操作。
但是,当我尝试添加一个不是id的参数的方法时,我似乎无法正确路由它。
这是它的样子:
// GET: api/Spellbooks/user@email.com
[ResponseType(typeof(List<Spellbook>))]
[Route("api/Spellbooks/{username}")]
public IHttpActionResult GetSpellbook(string username)
{
List<Spellbook> spellbooks = db.Spellbooks.Where(x=>x.Username == username).ToList();
if (spellbooks == null)
{
return NotFound();
}
return Ok(spellbooks);
}
所以我试图点击http://localhost:xxxx/api/Spellbooks/emailaddress, 但我每次都得到404。
这绝对是一个APIController,我已config.MapHttpAttributeRoutes();
打开。
我错过了什么?
答案 0 :(得分:0)
您的用户名参数在哪里?
你的电话应该是这样 -
http://localhost:xxxx/api/Spellbooks/emailaddress/David
<强>更新强>
尝试将参数声明为字符串{username:string}
更新2
问题在于你的&#39;。&#39;正如你在link中看到的那样。 你可以在参数中没有点的情况下发送电子邮件,然后将ite替换回常规模式,或者你可以使用链接提供的所有好建议。
答案 1 :(得分:0)
如果您单步执行它,在查看username
时是否获得了值?或者它总是空的?
如果您的路线不起作用,调试路线的一种简单方法是向http://localhost:xxxx/api/Spellbooks/?emailaddress=thisemailaddress
发出请求,看看您是否可以获得回复。实际上,从REST标准来看,可以认为它是一个更清晰的路径,因为您将返回一组元素,而不是单个对象。