WebAPI múltiple HTTPGET de PostMan, error de punto final de coincidencia múltiple
Aug 25 2020
En mi webAPI tengo 3 métodos de controlador HTTPGET. Esto es lo que puedo llamar desde el cartero de Google y el método hasta ahora
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)
pero obteniendo este error
Microsoft.AspNetCore.Routing.Matching.AmbiguousMatchException: la solicitud coincidió con varios puntos finales. Partidos:
no puede distinguir la diferencia de las otras llamadas GET.
Me gustaría pasar una cadena para pasar a la consulta por propiedad de nombre.
Se agradece cualquier ayuda. Gracias
Aquí está mi 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);
}
}
Respuestas
1 RoarS. Aug 24 2020 at 22:24
Debe diferenciar entre sus métodos Get, eso se puede hacer modificando la ruta para Get (int id) con [HttpGet("{id:int}")]esto
[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);
}
Probado y verificado en mi computadora.