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?


____________________________________________________
Não há nessa vida algo que não se possa alcançar, você só precisa ir buscar.

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


____________________________________________________
Não há nessa vida algo que não se possa alcançar, você só precisa ir buscar.

 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