如何解决来自PostMan的WebAPI多个HTTPGET,多个匹配的端点错误
在我的webAPI中,我有3个HTTPGET控制器方法。到目前为止,这是我可以从Google邮递员那里拨打的电话及其方法
selected GET postman with http://localhost:51970/user
successfully calls API: public ActionResult<IEnumerable<User>> Get()
selected GET postman with http://localhost:51970/user/1
successfully calls API: public ActionResult<User> Get(int id)
I tried string parameter but get multiple matching GET endpoints
[HttpGet("{code}")]
I tried public ActionResult<User> Get(string name)
但收到此错误
Microsoft.AspNetCore.Routing.Matching.AmbiguousMatchException:请求与多个端点匹配。符合条件:
无法分辨与其他GET调用的区别。
我想传递一个字符串,以按名称属性传递给查询。
感谢您的帮助。谢谢
这是我的API
[Route("[controller]")]
[ApiController]
public class UserController : ControllerBase
{
private readonly IUserService userService;
public UserController (IUserService _userService)
{
userService= _userService;
}
[HttpGet]
public ActionResult<IEnumerable<User>> Get()
{
var users= userService.GetUsers();
return Ok(users);
}
[HttpGet("{id}")]
public ActionResult<User> Get(int id)
{
var user= userService.GetUserById(id);
return Ok(user);
}
[HttpGet("{code}")]
public ActionResult<User> Get(string name)
{
var user= claimService.GetUserByName(name);
return Ok(user);
}
}
解决方法
您需要在Get方法之间有所不同,可以通过像这样用[HttpGet("{id:int}")]
修改Get(int id)的路由来完成
[HttpGet("{id:int}")]
public ActionResult<User> Get(int id)
{
var user= userService.GetUserById(id);
return Ok(user);
}
[HttpGet("{code}")]
public ActionResult<User> Get(string code)
{
var claimf = claimService.GetClaimsByCode(code);
return Ok(claimf);
}
在我的计算机上经过测试和验证。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。