WEBAPI NET CORE ROTEAMENTO

 Tópico anterior Próximo tópico Novo tópico

WEBAPI NET CORE ROTEAMENTO

C#

 Compartilhe  Compartilhe  Compartilhe
#484921 - 14/10/2018 09:31:48

MRSILVA
MARINGA
Cadast. em:Julho/2015


Última edição em 14/10/2018 13:14:58 por MRSILVA

Olá pessoal.

Estou dando meus primeiros passos com WEB API NET CORE e estou com dificuldade para chamar um método correto (verbo Get) já fiz varias pesquisas más não consigo corrigir.
Tenho dois métodos Get no meu controller que utiliza o mesmo tipo de parâmetro (int) mas quando faço a solicitação via HTTP sempre o mesmo método é chamado, mesmo eu colocando o nome do método ele é ignorado e pega o primeiro método da minha controller, segue abaixo o código.

[Produces("application/json")]
[Route("api/[controller]")]
    
    public class ProdutoFamiliaController : Controller
    {
        private readonly IProdutoFamiliaRepositorio repositorio;
        public ProdutoFamiliaController(ContextFiscal contextFiscal)
        {
            repositorio = new ProdutoFamilia(contextFiscal);
        }

        

        // GET: api/ProdutoFamilia/GetProdutoFamilia/5
        [HttpGet("{id}", Name = "GetProdutoFamilia")]
      
        // [HttpGet, Route("api/ProdutoFamilia/GetProdutoFamilia")]
        public IActionResult GetProdutoFamilia(int id)
        {
            try
            {

                return new ObjectResult(repositorio.Get(id));
            }
            catch (Exception ex)
            {

                KeyNotFoundException keyNotFoundException = new KeyNotFoundException(ex.Message);
                return NotFound(keyNotFoundException);
            }
        }

        // GET: api/ProdutoFamilia/GetFiltroSubGrupo/1
        [HttpGet("{subGrupo}", Name = "GetFiltroSubGrupo")]
        public IActionResult GetFiltroSubGrupo(int subGrupo)
        {
            try
            {

                return new ObjectResult(repositorio.GetAll(subGrupo));
            }
            catch (Exception ex)
            {

                KeyNotFoundException keyNotFoundException = new KeyNotFoundException(ex.Message);
                return NotFound(keyNotFoundException);
            }
        }  


Também tentei mapear utilizado dessa forma:

[HttpGet, Route("api/ProdutoFamilia/GetFiltroSubGrupo")]  


Más não funciona igual nas WEB API convencional do Windows.

Acredito que seja algo referente a configuração  mas em minhas pesquisas não consegui localizar, somente referente a MVC.

Alguém pode me ajudar?
Desde já agradeço.




#484922 - 14/10/2018 09:43:26

MRSILVA
MARINGA
Cadast. em:Julho/2015


Última edição em 14/10/2018 10:02:21 por MRSILVA

Pessoal.
Consegui resolver, mas tive que tirar a decoração no inicio da controller:

[Route("api/[controller]")]  


e utilizar o roteamento direto no método:

[HttpGet, Route("api/ProdutoFamilia/GetFiltroSubGrupo")]  


Está funcionando perfeitamente.
Alguém sabe como utilizar  passando o nome do Get como estava tentando antes?

Desde já agradeço.




Resposta escolhida #484923 - 14/10/2018 16:15:53

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Se a rota é exatamente o nome da api/controller/método, você não precisa decorar com uma rota, basta decorar como "HttpGet". Além disso, uma boa dica é implementar o Swagger, ele vai fazer uma engenharia reversa e facilitar sua vida um bom bocado

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#484926 - 15/10/2018 00:16:01

MRSILVA
MARINGA
Cadast. em:Julho/2015


Obrigado kerplunk.
Vou estudar sua dica.



 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por MRSILVA em 23/10/2018 16:16:34