WEBAPI RETORNAR CLIENTE POR NOME

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

WEBAPI RETORNAR CLIENTE POR NOME

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#491144 - 08/11/2019 10:40:51

PERCIFILHO
MATAO [SP]
Cadast. em:Dezembro/2009


Última edição em 08/11/2019 10:43:44 por PERCIFILHO

Uma dúvida: Tenho uma WebApi onde:

public IQueryable<Cliente> GetClientes()
{
    return db.Clientes.OrderBy(x => x.Nome);
}

Me retorna todos os clientes da tabela; (https://localhost:XXXXX/api/clientes)

public IHttpActionResult GetCliente(int id)
{
    Cliente cliente = db.Clientes.Find(id);
    if (cliente == null)
    {
        return NotFound();
    }
   return Ok(cliente);
}

Me retorna um clientes baseado em um Id.  (https://localhost:XXXXX/api/clientes/1)

Se eu quisesse implementar um método para retornar todos os clientes à partir de uma consulta por nome.
Por exemplo, buscar todos os nomes de clientes que contenham "João". (https://localhost:XXXXX/api/clientes/João)

Tentei assim, não funcionou:
public IQueryable<Cliente> GetClientes(string nome)
{
    return db.Clientes.Where(x => x.Nome.Contains(nome)).OrderBy(x => x.Nome);
}


Assim também não funcionou:
public IHttpActionResult GetCliente(string nome)
{
    var lista = db.Clientes.Where(x => x.Nome.Contains(nome)).OrderBy(x => x.Nome).ToList();
    if (lista == null)
    {
        return NotFound();
    }
    return Ok(lista);
}


Estou tentando fazer uma coisa que não é possível? Ou estou errando onde?
Por favor alguém pode me dar uma ajuda?


____________________________________________________
Você sabe que alguém te ama não pelo que ele fala, mas pelo o que faz.
O amor não sobrevive de teorias.




#491149 - 08/11/2019 12:32:50

MRSILVA
MARINGA
Cadast. em:Julho/2015


Olá.

Acredito que o problema está no nome do método da WEB API, nesse caso ele teria que chamar cliente para você conseguir chamar com a url que está utilizando.

public IHttpActionResult Cliente(string nome)

Você verificou se a requisição está chegando na WEB API? talvez o problema pode ser na consulta, da forma que está pesquisando não retornara registro se a pessoa tiver sobrenome, ou seja, retornará somente os registros que tenha somente o conteudo João.

Espero ter ajudado.





#491192 - 12/11/2019 08:49:55

PERCIFILHO
MATAO [SP]
Cadast. em:Dezembro/2009


Percebi onde está o erro:
o url tem que ficar assim:
https://localhost:XXXXX/api/clientes?João
Então a web api fica assim:
public IQueryable<Cliente> GetClientes(string nome)
{
   return db.Clientes.Where(x => x.Nome.Contains(nome)).OrderBy(x => x.Nome);
}

Aí, para consumir essa web api eu fiz assim:
private async void GetClienteByNome(string nomeCliente)
{
    using (var client = new HttpClient())
    {
        using (var response = await client.GetAsync(Dados.URI + "?nome=" + nomeCliente))
        {
            if (response.IsSuccessStatusCode)
            {
                var ClientesJsonString = await response.Content.ReadAsStringAsync();
                dgvClientes.DataSource = JsonConvert.DeserializeObject<Cliente[]>(ClientesJsonString).ToList();
            }
            else
            {
                MessageBox.Show("Não foi encontrado : " + response.StatusCode);
            }
        }
   }
}
}


____________________________________________________
Você sabe que alguém te ama não pelo que ele fala, mas pelo o que faz.
O amor não sobrevive de teorias.




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


Tópico encerrado, respostas não sao permitidas
Encerrado por PERCIFILHO em 13/11/2019 16:36:53