Web API - Importante Parte 2

 

Olá pessoal, hoje eu vou continuar com o artigo sobre Web Service e pra quem não leu ainda a parte 1, acesse o link abaixo e leia por favor.

Link: https://www.ecode10.com/artigo/2984/Web-API-Importante-Parte-1

 

Utilizado:

  • Ferramenta Visual Studio
  • Linguagem C#
  • Tecnologia Web API
  • Banco de dados SQL Server

 

A parte dois eu vou abordar sobre métodos usando SELECT e LIKE. Dois comandos importantes que o banco de dados utiliza para buscar dados no banco de dados usando nomes ao invés de chaves primeiras ou estrangeiras. Basicamente serve para buscar algum valor utilizando nomes ou pedaços de nomes como: inicial, meio ou fim. 

 

Existem duas maneiras de fazer isso, a primeira é utilizando o EntityFramework e a outra você pode utilizar comando normal para enviar ao banco de dados.

 

Código

Vou resumir bem este documento para não ficar chato para você, mesmo assim vou tentar te explicar linha por linha. Vamos ao primeiro código.

 

Code 1.1 - Select com EntityFramework

[Route(“api/Disciplinas/byNome/{nome}")]

public IQueryable GetDisciplinasByNome(string nome)

{

     return db.Disciplinas.Where(e => e.NomeDisc.Contains(nome));

}

 

Como todos já sabe, o EntityFramework facilita muito o trabalho e te ajuda a economizar tempo no caso de pouco entendimento de SQL. O método é público e retorna uma Query da classe Disciplinas. Ele recebe como parâmetro de entrada apenas uma string chamada nome. A variável db significa a classe de conexão com o banco de dados. Existem propriedades dentro dela como a entidade Disciplinas e no caso dela, basta colocar o ponto e adicionar o Where. Para finalizar, basta colocar o nome da propriedade vinculada a classe que no meu caso é o “NomeDisc" e chamar o método “Contains”. Ele já faz o LIKE internamente pra você.

 

Code 1.2 - Select utilizando comando LIKE

[Route("api/Disciplinas/Nome/{nome}")]

public IHttpActionResult GetDisciplinas(string nome)

{

StringBuilder str = new StringBuilder();

str.Append(@"SELECT IdDisc, NomeDisc FROM Disciplinas WHERE NomeDisc LIKE @nome ");

 

IDataParameter parameter = new SqlParameter();

parameter.DbType = DbType.String;

parameter.ParameterName = "@nome";

parameter.Value = '%' + nome + '%';

 

var resultado = db.Database.SqlQuery(str.ToString(), parameter).ToList();

 

if (resultado == null)

      return NotFound();

 

return Ok(resultado);

}

 

O método já começa um pouco diferente. É público mas retorna o tipo IHttpActionResult ao invés de uma Query. O parâmetro de entrada é uma string simples e depois já começa a criar o comando SELECT. O comando possui os campos de retorno, tabela e condição WHERE com LIKE. O @nome é o parâmetro que vai receber o valor passado pelo usuário. As próximas linhas são específicas para informar o tipo nome e valor. O valor deve possuir o símbolo de porcento % antes e depois. O comando LIKE funciona com porcento e existe uma regra: se você colocar o % no início o banco de dados vai buscar pelo final do valor, se colocar no final, ele vai buscar pelo início do valor e se colocar no início e fim como no código, ele vai buscar pelo início, fim e meio.

 

Para que o comando seja passado para o banco de dados, utilizei o SQLQuery e transformei para ToList.

 

O resultado final são os dados retornados do banco de dados. Funciona que é uma beleza. Espero que tenha gostado e qualquer dúvida pode entrar em contato pelo site www.mauriciojunior.org.