Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Duas actions com o mesmo verbo

Imagine que estamos trabalhando com contratos. No tradicional MVC eu utilizaria POST para executar uma action "Encerrar", conforme o exemplo a seguir:

[HttpPost]
public async Task<IActionResult> Encerrar(VM viewmodel)
{            
    //Encerra o contrato
}

Em uma API o POST já é utilizado para criar novos objetos, então qual seria o melhor caminho para uma action de "Encerrar"? Tem como fazer algo tipo o exemplo a seguir?

[HttpPost]
public async Task<IActionResult> Post([FromBody] viewmodel model)
{            
    //Cria um contrato
}

[HttpPost]
public async Task<IActionResult> Encerrar([FromBody] viewmodel model)
{            
    //Encerra um contrato
}

Vlw!! =D

3 respostas
solução!

Oi Tiago, tudo bem?

Você pode trabalhar com múltiplas actions usando o mesmo verbo http (no caso, POST), utilizando o atributo RouteAttribute:

[HttpPost]
[Route("[action]")]
public async Task<IActionResult> Criar([FromBody] Contrato contrato)
{            
    //Cria um contrato
}

[HttpPost]
[Route("[action]")]
public async Task<IActionResult> Encerrar([FromBody] Contrato contrato)
{            
    //Encerra um contrato
}

para usar essas actions, você precisa modificar os endereços para acrescentar o nome das actions, conforme definido em [Route("[action]")], por exemplo:

api/Criar
api/Encerrar

VAAAAAAAAAAAAAAALEEEEEEEEEUUU!!!!

Excelente, Tiago, fico feliz por ter ajudado! Obrigado por participar do fórum!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software