Olá, Leandro!
Este erro geralmente ocorre quando o servidor entende o método da requisição, mas o método não é suportado para o recurso solicitado. No seu caso, o servidor não está permitindo o método PUT para o recurso que você está tentando acessar.
A primeira coisa que eu verificaria é se a URL que você está usando no Postman está correta. O erro pode estar ocorrendo porque a URL que você está tentando acessar não existe ou não aceita o método PUT.
A URL deve ser algo como http://localhost:porta/api/produtos/{id}
, onde {id}
é o ID do produto que você deseja atualizar. Verifique se o ID do produto que você está tentando atualizar realmente existe no banco de dados.
Outra coisa que você pode verificar é se o seu método UpdateProduto está sendo chamado corretamente. Você pode fazer isso colocando um breakpoint no início do método e verificando se ele é atingido quando você faz a requisição PUT no Postman.
Seu código parece estar correto, mas é difícil dizer com certeza sem ver o resto do seu controlador e a configuração do seu servidor.
Aqui está um exemplo de como o seu método UpdateProduto poderia ser chamado:
[Route("api/[controller]")]
[ApiController]
public class ProdutosController : ControllerBase
{
private readonly MeuContexto _context;
private readonly IMapper _mapper;
public ProdutosController(MeuContexto context, IMapper mapper)
{
_context = context;
_mapper = mapper;
}
// Outros métodos...
[HttpPut("{id}")]
public IActionResult UpdateProduto(int id, [FromBody] UpdateProdutoDto produtoDto)
{
var produto = _context.Produtos.FirstOrDefault(p => p.Id == id);
if (produto == null) return NotFound();
_mapper.Map(produtoDto, produto);
_context.SaveChanges();
return NoContent();
}
}
Espero que isso te ajude a encontrar a causa do problema. Se você ainda estiver tendo problemas, por favor, forneça mais detalhes sobre a configuração do seu servidor e o resto do seu controlador.
Espero ter ajudado e bons estudos!