Cuando trabajamos con la API Web de Dataverse, una de las operaciones más comunes es realizar consultas con el parámetro filter
. Sin embargo, cuando los valores contienen caracteres especiales como &
, ?
, #
, %
, entre otros, la consulta puede fallar o arrojar resultados inesperados. En este artículo, exploraremos cómo manejar estos casos correctamente.
Problema: Caracteres Especiales en filter
La API Web de Dataverse utiliza la sintaxis OData para realizar consultas a los datos. Al incluir caracteres especiales en los filtros, pueden surgir problemas de codificación o errores en la solicitud.
Ejemplo de consulta problemática:
GET https://yourorg.api.crm.dynamics.com/api/data/v9.0/accounts?$filter=name eq 'ACME & Co.'
Este ejemplo fallará porque el carácter &
tiene un significado especial en una URL y no está correctamente codificado.
Solución: Codificación de Caracteres Especiales
Para evitar estos errores, es necesario codificar los caracteres especiales usando URL encoding.
Una de las alternativas que podemos encontrar es realizar el encoding a mano por ejemplo en esta pagina
Sin embargo, power automate, nos trae una funcion especifica para estos problemas
Solucion en Power Automate
Si estás usando Power Automate para realizar una consulta HTTP a Dataverse, puedes usar la función encodeUriComponent()
para codificar los valores en la consulta.
{
"method": "GET",
"uri": "https://yourorg.api.crm.dynamics.com/api/data/v9.0/accounts?$filter=name eq '@{encodeUriComponent(variables('CompanyName'))}'"
}
Caracteres Comunes y sus Equivalentes Codificados
Carácter | Código URL |
---|---|
& | %26 |
? | %3F |
# | %23 |
% | %25 |
' | %27 |