1
resposta

Requisição Delete Passando informação pelo body

Olá,

Tenho uma tabela de join que tem uma chave primária composta, conforme definição abaixo:

    //Classe GestorFuncionário tem chave composta pelos campos GestorId e FuncionarioId, tanto o gestor quanto o funcionário são do tipo Usuario
    public class GestorFuncionario
    {
        public int GestorId { get; set; }
        public Usuario Gestor { get; set; }
        public int FuncionarioId { get; set; }
        public Usuario Funcionario { get; set; }
    }

No momento de desenvolver o método Delete da API me deparei com o problema de não poder chamar o padrão "api/[controller]/{id}", então resolvi passar o objeto do tipo GestorFuncionario como parâmetro do método Delete e informa-lo no corpo da requisição.

//EndPoint para deletar uma entidade GestorFuncionario

[HttpDelete]
        public async Task DeleteGestorFuncionarioAsync(GestorFuncionario gestorFuncionario)
        {
            gestorFuncionario = await _context.GestorFuncionarios.Where(x => x.GestorId == gestorFuncionario.GestorId && x.FuncionarioId == gestorFuncionario.FuncionarioId).FirstOrDefaultAsync();
            if (gestorFuncionario == null)
            {
                return NotFound();
            }
            _context.GestorFuncionarios.Remove(gestorFuncionario);
            await _context.SaveChangesAsync();
        }

A API compilou normalmente e consegui realizar o teste sem problemas pelo POSTMAN, porém quando tentei utilizar o objeto HttpClient no momento de consumir a API, verifiquei que não é possível adicionar um corpo no método _httpClient.DeleteAsync(). Dessa forma, como posso enviar informações no corpo de requisições delete para resolver essa questão?

1 resposta

Olá Paulo, tudo bem?

Já tentou fazer a anotação para forçar o parâmetro pelo corpo?

public async Task DeleteGestorFuncionarioAsync([FromBody] GestorFuncionario gestorFuncionario)

No aguardo!