ASP.NET Core Web API如何实现按ID查询?当前返回全部记录
问题原因
你的接口路由定义错误,[HttpGet("EmployeeId")] 是把EmployeeId作为固定路径段,而非路由参数占位符。这会导致你通过/api/xxx/123这类路径请求时,无法命中该按ID查询的方法,反而可能触发控制器中另一个无参数的HttpGet方法,最终返回全部数据。
修复方案
修改路由属性,将固定路径改为参数占位符:
[HttpGet("{EmployeeId}")] public ActionResult<Employeedatum> Getbyid(int EmployeeId) { if (EmployeeId <= 0) { return NotFound("无效的ID"); } var employeedata = DbContext.Employeedatum.FirstOrDefault(s => s.empid == EmployeeId); if (employeedata == null) { return NotFound("未找到该员工记录"); } return Ok(employeedata); }
额外说明
- 若控制器带有路由前缀(比如
[Route("api/[controller]")]),修复后接口的完整请求路径应为/api/你的控制器名/123(例如/api/Employees/456),此时URL中的数字会自动绑定到EmployeeId参数。 - 如果需要通过查询字符串传递ID(比如
/api/Employees?EmployeeId=123),可保留原路由,但请求时必须携带查询参数;不过RESTful风格更推荐用路径参数的方式实现按ID查询。
内容的提问来源于stack exchange,提问作者santhosh kumar
相关产品推荐
相关产品推荐

