Dgarcia
Hola, todos,
Estoy teniendo más dificultades para conectar un a PowerBI a través de API con una clave. No estoy seguro de por dónde empezar, no tengo ninguna experiencia con API.
Al conectar la API, aparece un error de «Una clave de API web solo se puede especificar cuando se proporciona un nombre de clave de API web» o no se especificó un valor de clave de API «
Dgarcia
Hola @TaylorN,
Intenté exactamente lo que publicaste a continuación, pero parece que todavía puedo hacerlo funcionar. Cualquier ayuda será muy apreciada.
TaylorN
En respuesta a Dgarcia
@dgarcia
Eso significaría que los datos que se devuelven no son una página web como ha especificado (es decir, etiquetas HTML, etc.). ¿Puede intentar usar algo como Postman para acceder al punto final de la API y ver los datos que está recuperando?
Postman es bastante fácil de usar y, en mi opinión, crucial cuando se trabaja con API. Simplemente cree una nueva solicitud GET, escriba esa URL, haga clic en la pestaña «encabezados» y agregue su clave de API, tal como lo hizo en Power BI.
Dgarcia
En respuesta a TaylorN
Hola @TaylorN,
Si es útil, proporcioné las instrucciones que se supone que debo usar para crear la API desde el sistema operativo de la comunidad.
Búsqueda de documentación de API
Autenticación
La autenticación se basa en el encabezado HTTP, utilizando el encabezado Authorization-Token con la clave API de la cuenta que llama.
Las claves de API se pueden generar aquí.
Compresión
Se admite el algoritmo de compresión de desinflado. Envíe el encabezado «Accept-Encoding» con el valor «desinflar» para habilitar.
Métodos REST
Métodos válidos de REST: GET y POST
Límite
El parámetro «límite» a través de GET o POST es compatible con todos los métodos REST. Este parámetro restringirá el número de filas devueltas por la API. Este parámetro debe ser mayor que cero y menor o igual que 200. Si no se proporciona ningún límite, la API se establecerá de forma predeterminada en 200.
Compensar
El parámetro «offset» a través de GET o POST es compatible con todos los métodos REST. El desplazamiento presentará los resultados compensados por el número entero proporcionado. Con este parámetro puede paginar los resultados de esta api. Por lo tanto, una solicitud puede acceder a cualquier página (n) de esta API proporcionando un desplazamiento de n * límite + 1.
Pedido
El parámetro «orden» a través de GET o POST es compatible con todos los métodos REST. El orden presentará los resultados ordenados por la columna dada o la matriz de columnas json.
Formato JSON
Todas las respuestas y los valores publicados deben ser JSON válidos dentro de una estructura clave / valor. Claves y tipos de datos válidos en esta implementación de API:
{
«Client_CreateStamp»: {
«valor»: «marca de tiempo con zona horaria»,
«operador»: [
«date_greaterthan | date_lessthan | date_equals | greaterthan | lessthan | equals | minus_days_interval | minus_months_interval | minus_years_interval | plus_days_interval | plus_months_interval | plus_years_interval»
]
},
«Interaction_CreateStamp»: {
«valor»: «marca de tiempo con zona horaria»,
«operador»: [
«date_greaterthan | date_lessthan | date_equals | greaterthan | lessthan | equals | minus_days_interval | minus_months_interval | minus_years_interval | plus_days_interval | plus_months_interval | plus_years_interval»
]
},
«AssistanceSystem_AssistanceDate»: {
«valor»: «marca de tiempo con zona horaria (ISO, mdy)»,
«operador»: [
«equals | lessthan | greaterthan»
]
}
}
Ejemplo de llamada GET:
rizo
«https://icfs.communityos.org/api/WoolseyFire»
-X OBTENER
-H ‘Token de autorización: account_api_key’
Ejemplo de llamada POST:
rizo
«https://icfs.communityos.org/api/WoolseyFire»
-X POST
-H «Tipo de contenido: aplicación / json»
–datos ‘{
«Client_CreateStamp»: {
«valor»: «marca de tiempo con zona horaria»,
«operador»: [
«date_greaterthan | date_lessthan | date_equals | greaterthan | lessthan | equals | minus_days_interval | minus_months_interval | minus_years_interval | plus_days_interval | plus_months_interval | plus_years_interval»
]
},
«Interaction_CreateStamp»: {
«valor»: «marca de tiempo con zona horaria»,
«operador»: [
«date_greaterthan | date_lessthan | date_equals | greaterthan | lessthan | equals | minus_days_interval | minus_months_interval | minus_years_interval | plus_days_interval | plus_months_interval | plus_years_interval»
]
},
«AssistanceSystem_AssistanceDate»: {
«valor»: «marca de tiempo con zona horaria (ISO, mdy)»,
«operador»: [
«equals | lessthan | greaterthan»
]
}
} ‘
-H ‘Token de autorización: account_api_key’
Objeto de resultado de ejemplo:
{
«resultado»: «éxito»,
«datos»: [
{
«Client_CreateStamp»: «timestamp with timezone»,
«Client_Id»: «text»,
«Client_CreateAccountId»: «create account id»,
«Client_CreateAccountId_HrefLabel»: «account name and id»,
«Client_CreatePortalId»: «create portal id»,
«Client_CreateFormsetDeploymentId»: «create formset deployment id»,
«Client_EditAccountId»: «edit account id»,
«Client_EditAccountId_HrefLabel»: «account name and id»,
«Client_EditPortalId»: «edit portal id»,
«Client_EditFormsetDeploymentId»: «edit formset deployment id»,
«Client_EditStamp»: «timestamp with timezone»,
«Client_AuditStamp»: «timestamp with timezone»,
«Client_Status»: «status of record (active | deleted | archive)»,
«ClientEvent_ClientEvent»: «text»,
«ClientUpload_PriorContactOrganizations»: «text»,
«ClientAccount_DcmAssignment»: «text»,
«ClientOption_PredisasterLivingSituationBestDescribedAs»: «text»,
«ClientOption_DcmpPriorityLevel»: «text»,
«ClientOption_PreferredLanguageOptionId»: «text»,
«ClientOrganization_CaseManagerOrganization»: «text»,
«ClientCustom_Veteran»: «text»,
«ClientAddressus_ClientAddressus»: «text»,
«ClientSystem_FirstName»: «text»,
«ClientSystem_LastName»: «text»,
«ClientSystem_DateOfBirth»: «text»,
«ClientSystem_SingleHeadOfHouseholdWithMinorsInHome»: «text»,
«ClientSystem_RecoveringFromPreviousDisaster»: «text»,
«ClientSystem_MemberWfunctionalAndAccessNeeds»: «text»,
«ClientSystem_LivingInUnsafeunsanitaryEnvironment»: «text»,
«ClientSystem_SufferedDamageAndIsUnderinsured»: «text»,
«ClientSystem_TotalNumberOfChildrenUnder18»: «text»,
«ClientSystem_TotalNumberOfAdults18OrOlder»: «text»,
«ClientSystem_IsolatedGeographicallySocially»: «text»,
«ClientSystem_HouseholdSignificantEmotionalDistress»: «text»,
«ClientSystem_HouseholdIncludesMembersAged65OrOlder»: «text»,
«ClientSystem_HouseholdWithMentalHealthNeeds»: «text»,
«ClientSystem_HouseholdWithMedicallyRelatedNeeds»: «text»,
«Interaction_CreateStamp»: «timestamp with timezone»,
«Interaction_ClientId»: «text»,
«Interaction_Id»: «text»,
«Interaction_CreateAccountId»: «create account id»,
«Interaction_CreateAccountId_HrefLabel»: «account name and id»,
«Interaction_CreatePortalId»: «create portal id»,
«Interaction_CreateFormsetDeploymentId»: «create formset deployment id»,
«Interaction_EditAccountId»: «edit account id»,
«Interaction_EditAccountId_HrefLabel»: «account name and id»,
«Interaction_EditPortalId»: «edit portal id»,
«Interaction_EditFormsetDeploymentId»: «edit formset deployment id»,
«Interaction_EditStamp»: «timestamp with timezone»,
«Interaction_AuditStamp»: «timestamp with timezone»,
«Interaction_Status»: «status of record (active | deleted | archive)»,
«Assistance_ClientId»: «text»,
«Assistance_Id»: «text»,
«Assistance_CreateAccountId»: «create account id»,
«Assistance_CreateAccountId_HrefLabel»: «account name and id»,
«Assistance_CreatePortalId»: «create portal id»,
«Assistance_CreateFormsetDeploymentId»: «create formset deployment id»,
«Assistance_EditAccountId»: «edit account id»,
«Assistance_EditAccountId_HrefLabel»: «account name and id»,
«Assistance_EditPortalId»: «edit portal id»,
«Assistance_EditFormsetDeploymentId»: «edit formset deployment id»,
«Assistance_CreateStamp»: «timestamp with timezone»,
«Assistance_EditStamp»: «timestamp with timezone»,
«Assistance_AuditStamp»: «timestamp with timezone»,
«Assistance_Status»: «status of record (active | deleted | archive)»,
«AssistanceOption_Organization»: «text»,
«AssistanceCustom_Notes»: «text»,
«AssistanceSystem_AssistanceDate»: «text»,
«AssistanceSystem_Value»: «text»
}
]
}
TaylorN
En respuesta a Dgarcia
Hola @dgarcia
Sigo pensando que debería ejecutar algunas solicitudes HTTP a través de Postman para ver cómo se devuelven los datos. Sin tener acceso a la API yo mismo, me temo que no puedo ayudar mucho más. ¿Puede generar una clave API para que la pruebe, que pueda eliminar / cambiar más tarde?
También parece que tendrá que iterar sobre los datos, ya que la documentación sugiere que hay paginación. Este artículo me resultó útil en el pasado.
Dgarcia
En respuesta a TaylorN
Ey ,
¡Lo probé en Postman! Muy fácil de navegar una vez que lo domines. ¡Gracias por la sugerencia! Funciona bien con Postman y obtiene toda la información correcta.
Solo necesito averiguar cómo hacerlo en power bi por alguna razón, sigo recibiendo un error diferente ahora.
Detalles: «La longitud del bloque no coincide con su complemento».
Además, por alguna razón en la aplicación, todavía no podemos eliminar nuestras claves API, pero solicité tener una clave API temporal para ver si podrías ayudarme a solucionar el problema. Creo que el problema es que power bi no puede extraer la información con la API real. ¡¡O soy yo que no sé lo que estoy haciendo !!
TaylorN
En respuesta a Dgarcia
Hola @dgarcia
Ese error en particular se relaciona con la compresión GZIP (desde la memoria) y es una excepción de .NET. No estoy seguro exactamente de cómo solucionarlo, pero tal vez podría jugar con el encabezado «Codificación de contenido» en la solicitud HTTP. es decir, establecer el Codificación de contenido encabezado a un valor de gzip.
TaylorN
Hola @dgarcia
¿Sabe cómo espera la API que se pase la autenticación? Debería (con suerte) encontrar esto en la documentación de la API. Parece que ha intentado agregar algunos encabezados HTTP allí, y eso tiene sentido porque muchas API esperan que se proporcione un token / clave como encabezado (es decir, X-API-Key, etc.).
Si de hecho espera una clave API a través del encabezado HTTP, entonces debería poder elegir simplemente la autenticación «Anónima» y asegurarse de especificar la clave API en el valor del encabezado HTTP.