我的目标是在后端使用的GET调用中按姓氏搜索。我有Get()和Get(int id)工作得非常好,虽然我花了一段时间来使SearchByLastName(字符串名称)工作但不能。这是我的控制器中的功能
// GET
[Route("api/member/byLastname/{id}")]
public IHttpActionResult SearchByLastName(string id)
{
var member = _context.Members.SingleOrDefault(m => m.LastName == id);
if (member == null)
{
return NotFound();
}
return Ok(member);
}
我不能为我的生活弄清楚为什么当其他Get功能执行并且路线看起来正确时,这不起作用。
在这种情况下我正在进行的通话看起来像这样: http://.../api/Member/byLastName/Smith有什么想法吗?
答案 0 :(得分:4)
哇我花了一个多小时试图找到答案,我在发布这个问题后立即得到答案。对不起。无论如何,答案是在名称中使用动词Get as prefix是惯例。我将我改为GetLastName(string id)
,现在可以使用了
答案 1 :(得分:1)
我建议不要使用Route[""]
而是总是使用动词,而是支持路由,所以不是
[Route("api/member/byLastname/{id}")]
你可以做到
[HttpGet("api/member/byLastname/{id}")]
HttpGet
属性位于Microsoft.AspNet.Mvc
命名空间