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 mtodo correto (verbo Get) j fiz varias pesquisas ms no consigo corrigir.
Tenho dois mtodos Get no meu controller que utiliza o mesmo tipo de parmetro (int) mas quando fao a solicitao via HTTP sempre o mesmo mtodo chamado, mesmo eu colocando o nome do mtodo ele ignorado e pega o primeiro mtodo da minha controller, segue abaixo o cdigo.

[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);
            }
        }  


Tambm tentei mapear utilizado dessa forma:

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


Ms no funciona igual nas WEB API convencional do Windows.

Acredito que seja algo referente a configurao  mas em minhas pesquisas no consegui localizar, somente referente a MVC.

Algum pode me ajudar?
Desde j agradeo.




#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 decorao no inicio da controller:

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


e utilizar o roteamento direto no mtodo:

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


Est funcionando perfeitamente.
Algum sabe como utilizar  passando o nome do Get como estava tentando antes?

Desde j agradeo.




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/mtodo, voc no precisa decorar com uma rota, basta decorar como []HttpGet[]. Alm disso, uma boa dica implementar o Swagger, ele vai fazer uma engenharia reversa e facilitar sua vida um bom bocado

_______________________________________________________________________
Virei Orculo!
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