Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started
Tenemos una fuente de datos de API web que vive detrás de una implementación de cloudfare donde están involucradas las redirecciones http 302.
El uso de Power BI Desktop > obtener datos > web [ api ] > escribir los detalles de la dirección URL y el valor inicial del encabezado de autorización genera un acceso denegado. Esto se debe a que la documentación de la API de servicios apunta a una API web que emite redireccionamientos 302. Si ponemos el valor de la url de redireccionamiento las cosas funcionan bien. El problema es que es una solución frágil y, en cambio, nos gustaría admitir el seguimiento de las redirecciones 302.
Tenemos el siguiente código en su lugar que en la línea "Response = Json.Document(InitialRequest)", genera el error "Expression.Error: '302' no es compatible con la opción ManualStatusHandling".
¿No debería ser compatible con 302 y, si no, con alguna información sobre cómo creamos correctamente el código M de la fuente de datos de la API web para seguir una redirección?
let
// initial request to get the redirect url
InitialRequest = Web.Contents("https://my.securityjourney.com/api/v3/public-reporting/users", [ManualStatusHandling={302}]),
//RedirectUrl = Text.FromBinary(InitialRequest[Headers][Location]), // Expression.Error: We cannot apply field access to the type Binary.
Response = Json.Document(InitialRequest), // Expression.Error: '302' is not supported by the ManualStatusHandling option.
RedirectUrl = Response[Headers][Location],
// follow the redirect url to get the actual data
FinalRequest = Web.Contents(RedirectUrl),
Source = Json.Document(FinalRequest),
#"Converted to Table" = Table.FromRecords({Source}),
#"Expanded users" = Table.ExpandListColumn(#"Converted to Table", "users"),
#"Expanded users1" = Table.ExpandRecordColumn(#"Expanded users", "users", {"email", "firstName", "lastName", "totalPoints", "securityChampion", "timeSpent"}, {"users.email", "users.firstName", "users.lastName", "users.totalPoints", "users.securityChampion", "users.timeSpent"}),
#"Changed Type" = Table.TransformColumnTypes(#"Expanded users1",{{"users.email", type text}, {"users.firstName", type text}, {"users.lastName", type text}, {"users.totalPoints", Int64.Type}, {"users.securityChampion", type logical}, {"users.timeSpent", type text}})
in
#"Changed Type"
Hola @myusrn ,
La función Web.Contents de Power Query tiene algunas funciones integradas para tratar con códigos de estado HTTP, incluidos los redireccionamientos 302. Sin embargo, parece que la opción ManualStatusHandling no es compatible con 3021.
Para manejar los redireccionamientos 302, puede probar el siguiente enfoque:
Publicación similar: Redireccionamiento de conector web - Comunidad de Microsoft Fabric
Resuelto: Power Query Data de la redirección web con cookies (E... - Comunidad de Microsoft Fabric
Referencia: Control de códigos de estado con Web.Contents para conectores de Power Query - Power Query | Microso...
Saludos
Esteban Tao
Si esta publicación ayuda, entonces por favor considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.
Gracias por la respuesta y las sugerencias. Como puede ver en el código m de Power BI que compartí anteriormente, estoy realizando los pasos 1 a 3 que menciona anteriormente. El problema es que cuando llego al paso 2 dice que el paso 1 usa ". . . No se admite el parámetro ManualStatusHandling={302}])". ¿Tiene ideas sobre de qué otra manera "manejaría el estado 302 manualmente" que sea compatible?
Check out the September 2024 Power BI update to learn about new features.
Learn from experts, get hands-on experience, and win awesome prizes.