Expresiones de filtrado y clasificación
38 min
esta página describe las expresiones de filtrado y ordenación en la main api expresiones de filtrado y ordenación este ejemplo describe la entidad player, pero la misma solución se implementa para todas las demás entidades (por ejemplo, grupos, feeds, playlists, etc ) ejemplo la bsn cloud main api actualmente expone los siguientes métodos de administración de player que aceptan expresiones opcionales de filtrado y ordenación get /{{version}}/rest/devices/\[?marker={string}]\[\&pagesize={byte}]\[\&filter={expression}]\[\&sort={expression}] que recupera la lista paginada incluyendo hasta 100 instancias de 'device' comenzando desde el marcador especificado, coincidiendo con la expresión de filtro especificada y ordenada de acuerdo con la expresión de ordenación especificada get /{{version}}/rest/devices/regions/{ locationpath}/\[?filter={expression}] que recupera la lista de 'devicesregion' proporcionando la información agregada de ubicaciones de instancias de 'device' que coinciden con la ruta de ubicación y la expresión de filtro especificadas get /{{version}}/rest/devices/count/\[?filter={expression}] que recupera el número de instancias de 'device' que coinciden con la expresión de filtro especificada patch /{{version}}/rest/devices/\[?filter={expression}] (en desarrollo) que aplica los cambios especificados a las instancias de 'device' que coinciden con la expresión de filtro especificada delete /{{version}}/rest/devices/\[?filter={expression}] que elimina las instancias de 'device' que coinciden con la expresión de filtro especificada criterios de expresiones de filtro cada expresión de filtro puede contener uno o más criterios combinados mediante operadores and/or y opcionalmente agrupados mediante paréntesis cada criterio puede basarse en el nombre de una propiedad, una etiqueta del sistema o una etiqueta personalizada todos los nombres de propiedades se basan en el contrato de datos de la versión objetivo de la main api etiquetas del sistema y personalizadas además de las propiedades, cada instancia de entidad 'player' puede tener un conjunto diferente de etiquetas del sistema y personalizadas especificadas por el cliente, expuestas mediante la propiedad \[dictionary\<string, object>] etiquetas y administradas mediante los siguientes métodos de la bsn cloud main api put /{version}/rest/devices/{playerid\ int}/ put /{version}/rest/devices/{serial}/ patch /{version}/rest/devices/{playerid\ int}/ patch /{version}/rest/devices/{serial}/ get /{version}/rest/devices/{playerid\ int}/tags/ get /{version}/rest/devices/{serial}/tags/ post /{version}/rest/devices/{playerid\ int}/tags/ post /{version}/rest/devices/{serial}/tags/ delete /{version}/rest/devices/{playerid\ int}/tags/ delete /{version}/rest/devices/{serial}/tags/ cada etiqueta del sistema y personalizada debe especificarse explícitamente para la instancia de entidad objetivo, pero la lista de etiquetas del sistema disponibles está predefinida por los propietarios del producto y asignada a algunas propiedades, por lo que sus valores siempre deben estar sincronizados por ejemplo, la etiqueta del sistema asignada a la propiedad player health status se llama string \[device] \<healthstatus> menciones de propiedades y etiquetas en expresiones las menciones de propiedades y etiquetas en expresiones son diferentes las propiedades están envueltas entre corchetes y separadas por puntos, mientras que las etiquetas están envueltas entre signos de menor y mayor y opcionalmente pueden estar precedidas por el nombre de la entidad objetivo entre corchetes, y el tipo de datos está separado por doble punto como puede ver en el ejemplo anterior cada propiedad y etiqueta tiene un tipo de datos fuerte; para las propiedades y etiquetas del sistema, se define en el contrato de datos de una versión objetivo de la api y para las etiquetas personalizadas se resuelve ya sea a partir del nombre completamente calificado o del primer valor asignado además, existe una solicitud para admitir etiquetas personalizadas sin valores que actúen como etiquetas identificadoras el tipo de datos define qué operadores y funciones son aplicables a una propiedad o etiqueta determinada en las condiciones las propiedades y etiquetas del tipo de datos booleano normalmente admiten los siguientes operadores es true es false las propiedades y etiquetas de tipos de datos numérico normalmente admiten los siguientes operadores es {number} no es {number} es mayor que {number} es menor que {number} está en el rango {number} y {number} no está en el rango {number} y {number} está en ({number}, {number}, ) no está en ({number}, {number}, ) las coordenadas gps también admiten expresiones como gps location (\[latitude] and \[longitude]) in ({latitude}, {longitude}, {distance}) gps location (\[latitude] and \[longitude]) not in ({latitude}, {longitude}, {distance}) las propiedades y etiquetas del tipo de datos cadena normalmente admiten los siguientes operadores es null no es null es '{expression}' no es '{expression}' comienza con '{string}' termina con '{string}' contiene '{string}' no contiene '{string}' contiene todos ('{string}', '{string}', ) contiene cualquiera ('{string}', '{string}', ) está en ('{string}', '{string}', ) no está en ('{string}', '{string}', ) las expresiones utilizadas en los operadores is y is not pueden incluir los comodines ' ', '?', '\[' + ']' las propiedades y etiquetas del tipo de datos fecha y hora (timestamp) normalmente admiten los siguientes operadores es '{datetime}' no es '{datetime}' es después de '{datetime}' es antes de '{datetime}' en los últimos ({interval}, {range}, '{datetime}') donde {interval} es uno de los valores de enumeración { "years", "months", "days" } no en los últimos ({interval}, {range}, '{datetime}') donde {interval} es uno de los valores de enumeración { "years", "months", "days" } está en el rango '{datetime}' y '{datetime}' no está en el rango '{datetime}' y '{datetime}' está en ('{datetime}', '{datetime}') no está en ('{datetime}', '{datetime}') el formato del valor '{datetime}' debe seguir iso 8601 y normalmente es como '2021 12 20t18 25 01 123z' las propiedades y etiquetas del tipo de datos intervalo de tiempo (intervalo de tiempo) normalmente admiten los siguientes operadores es '{timespan}' no es '{timespan}' es mayor que '{timespan}' es menor que '{timespan}' está en ('{timespan}', '{timespan}') no está en ('{timespan}', '{timespan}') el formato del valor '{timespan}' debe seguir iso 8601 y normalmente es como '3 18 25 01' las propiedades y etiquetas de los tipos de datos matriz numérica normalmente admiten los siguientes operadores es null no es null contiene todos ('{number}', '{number}', ) contiene cualquiera ('{number}', '{number}', ) las propiedades y etiquetas del tipo de datos matriz de cadenas normalmente admiten los siguientes operadores es null no es null contiene todos ('{string}', '{string}', ) contiene cualquiera ('{string}', '{string}', ) las propiedades y etiquetas del tipo de datos objeto normalmente admiten los siguientes operadores es null no es null las expresiones de ordenación solo pueden contener un nombre de propiedad completamente calificado o una etiqueta con el calificador opcional asc/desc, pero deberían admitir más en el futuro