Comenzando con ASP.NET Web API y Odata , Parte 3

Hola que tal?, seguimos con esta serie de artículos sobre Web Api y Odata, esta vez veremos las opciones de consulta.

Una de las potencialidades de Odata es la capacidad de definir consultas personalizadas y parametrizadas mediante la url, siguiendo nuestros ejemplos anteriores, podemos tener:

http://localhost:1927/Odata/Asignaturas?$orderby=Semestre

A estos parámetros Odata les llamara “query Options”, dentro de las que nos ofrece Odata tenemos:

  • $filter: Filtra los resultados, basados en una condición booleana.
  • $inlinecount: Le indica al servidor que incluya dentro del resultado el total de entidades que se obtuvieron por medio de la query, eso está pensado en la páginación eficiente del lado del servidor
  • $orderby: Ordena los resultado por algún criterio establecido en la query.
  • $skip: omite los primeros n resultados, apropiado para la paginación.
  • $top: Retorna solo los primeros n resultados.

Antes que nada, debemos habilitar la posibilidad de utilizar estas Query Options, y se debe hacer explícitamente, así que nos vamos al método Register del archivo WebApiConfig y des comentamos la línea que dice : config.EnableQuerySopport();

image

Si no te aparece esto, es por que debes instalar el WebTools 2012.2 Update, ya que la plantilla  Web API incluye este código.

Algo importante de indicar,  es que el método  EnableQuerySupport habilita las consultas para todos las acciones de los controladores que retornen un tipo IQueryable. Si no quieres que esto suceda, y solo agregar esta característica a algunas acciones, debes agregar el atributo [Queryable] a cada acción:

[Queryable]

public override IQueryable<Asignatura> Get()

{

   return asignaturas.AsQueryable();

}

Veamos entonces algunos ejemplos de consultas, si recordamos el artículo anterior teníamos:

http://localhost:1927/Odata/Asignaturas/

image

Para los filtros tenemos:

Retorna todos las asignaturas con semestre igual a 2:

http://localhost:1927/Odata/Asignaturas?$filter=Semestre eq 2

image

Retorna todas las asignaturas que tienen el string II dentro de Nombre:

http://localhost:1927/Odata/Asignaturas?$filter=substringof(‘II’,Nombre)

image

La misma consulta anterior, pero con el retorno de la cantidad de resultados:

http://localhost:1927/Odata/Asignaturas?$filter=substringof(‘II’,Nombre)&$inlinecount=allpages

image

El mismo ejemplo anterior, le agregamos ordenación descendente por ID

http://localhost:1927/Odata/Asignaturas?$filter=substringof(‘II’,Nombre)&$inlinecount=allpages&$orderby=ID desc

image

Como vez, bastante útil y fácil, en el próximo articulo revisaremos el tema de la paginación con un completo ejemplo, nos vemos!

@chalalo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *