WebAPI múltiplo HTTPGET de PostMan, múltiplo correspondência endpoint erro
Aug 25 2020
Em meu webAPI, tenho 3 métodos de controlador HTTPGET. Aqui está o que posso chamar do Google Postman e o método até agora
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)
mas recebendo este erro
Microsoft.AspNetCore.Routing.Matching.AmbiguousMatchException: a solicitação correspondeu a vários pontos de extremidade. Partidas:
ele não consegue diferenciar das outras chamadas GET.
Gostaria de passar uma string para passar para a propriedade query by name.
Qualquer ajuda é apreciada. obrigado
Aqui está minha 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);
}
}
Respostas
1 RoarS. Aug 24 2020 at 22:24
Você precisa diferenciar entre seus métodos Get, que podem ser feitos modificando a rota para Get (int id) com [HttpGet("{id:int}")]esta
[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);
}
Testado e verificado no meu computador.
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino