7.1.7 Configurar y probar los servicios con OData

En nuestro archivo Startup.cs en el método ConfigureServices agregamos el siguiente código para configurar OData

Startup.cs
public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers().AddOData(opt => 
                  opt.AddRouteComponents("odata", GetEdmModel()));
}

Vamos a registrar las rutas mediante las cuales van a ser accesados nuestros servicios, nuevamente en nuestro archivo Startup ahora en el método Configure agregamos la ruta odata para todos los modelos que registremos como EDM. Permitimos también que los servicios permitan filtrado, order by, seleccionar solamente unos campos

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
     app.UseEndpoints(endpoints =>
     {
          endpoints.MapControllers();
     }); 
}

Vamos a probar con postman los metadatos de nuestro servicio GET http://localhost:50685/odata/$metadata

Te regresa un xml con los servicios disponibles y la información del json a regresar.

Puedes probar con postman y puedes observar que regresa un json con lo siguiente:

  • @odata.context: Regresa el link del servicio para obtener mas información del servicio.

  • value: Regresa los clientes de acuerdo a los atributos de página.

  • @odata.nextLink: Regresa el link para obtener los siguientes clientes. Ejemplo: http://localhost:5000/odata/Clientes?$skip=10 el cual regresará los siguientes clientes.

Puedes agregar otra de las funciones oData para filtrar o seleccionar solo algunos campos y ordenar los registros

{{BaseURL}}/odata/Clientes?$select=Clave,RazonSocial,Activo
&$filter=Activo eq true&$count=true&
$orderby=RazonSocial desc&$top=5

De esta forma obtienes:

  • Solamente los campos Clave, RazonSocial y Activo.

  • Filtras para mostrar solo los clientes activos.

  • Incluyes el total de registros en la respuesta del servicio.

  • Ordenas por el campo RazonSocial de forma descendente.

  • Obtienes los primeros 5 renglones.

Last updated