Script powershell para regeneración masiva de planes de pago

consumir servicios desde PowerShell REST API

En este contenido vamos a consumir servicios desde PowerShell creados por cualquier cliente o dispositivo la cual nos conectaremos para poder consultar (método get) e incluso enviar datos (método post) como también se puede hacer uso de otros métodos como PUT y DELET. Generalmente, cuando se realiza una conexión con una REST API, se deberá proporcionar cierta información, que indica que acción se pretende ejecutar la cual es llamado como método. La información que vamos a proporcionar para los métodos van a ser HEADER y BODY, mas adelante vamos a ver como usar y aplicar esta información.

Es importante tomar en cuenta que cmdlet ofrece PowerShell para trabajar o consumir una API REST. Este nombre cmdlet es Invoke-RestMethod.

 

Método POST (obtener token)

Para poder hacer la consulta para este método es necesario cumplir con los siguientes parámetros.

  • Body: Construir un Body el cual debe tener un formato Json.

$Body = @{             codigo_cliente = "sifco"             username = "sifco"             password = "sifco" otros = "sifco"         }

 

  • Url: único parámetro obligatorio del cmdlet. Es donde debe ir la Url del servicio que vamos a consumir.

$Url = "https://sifco.org"

Teniendo la información necesaria para realizar la consulta, es ¡hora de empezar a invocar!

  • -Metodo Post

  • -Uri $Url

  • -Body $Body

  • $response: variable con contendrá la información que retorna después de realizar la consulta.

    $response = Invoke-RestMethod -Method Post -Uri $Url  -Body $Body

Regularmente la respuesta de la consulta tiene el siguiente formato.

{     "item1": [],     "item2": 5,     "access_token": "235jodhfglshd85djkf" }

 

 

Si deseamos ver el dato que contiene dicho elemento de la variable $response, en consola de PowerShell escribimos el siguiente comando, posteriormente nos muestra el resultado.

$response.access_token

 

Método POST + “Headers”

Este método es similar que el anterior lo único que cambia es el parámetro Headers, seguir los pasos para poder relazar esta consulta.

  • Headers: muchos de los servicios requieren de encabezados (Headers), dentro de los encabezados regularmente se incluyen elementos como identificadores de sesión o credenciales para autenticar y autorizar la consulta.

    • Authorization: es el token obtenido en el método anterior concatenando la variable $response.access_token.

$Headers = @{             'Content-Type' = "application/json"             'Authorization' = 'OAuth ' + $response.access_token //token con autorizacion de tipo Bearer/OAuth             'GX' = 'name app'         }

 

  • Body: Para construir el Body se lee un archivo csv.

    1. abrir archivo usando el método OpenFileDialog, en esta función se especifica el tipo de archivo que debe buscar.

    2. Obtener la ruta del archivo.

      1. $path = $FileBrowser.FileName #obtiene el path del file

    3. Importar archivo usando ruta obtenida en el paso “b”.

      1. $file_csv = Import-Csv $path

    4. Con un foreach lee cada fila del archivo.

    5. Crear nuevo objeto usando la variable del paso “d” y convertir el objeto a json.

  • Url: único parámetro obligatorio del cmdlet. Es donde debe ir la Url del servicio que vamos a consumir.

    $Url = "https://sifco.org"

Si ya tenemos la información que se necesita para la consulta entonces procedemos a invocar.

  • -Headers $Headers

  • -Metodo Post

  • -Uri $Url

  • -Body $Body

  • $response: es una variable con contendrá la información que retorna después de realizar la consulta.

    $response = Invoke-RestMethod -Uri $Url -Method Post -Headers $Headers -Body $Body

 

Despues de la consulta es necesario crear un nuevo archivo csv para poder ver los datos.

  • crear el encabezado del archivo.

  • ejecutar el objeto que contiene la informacion de la consulta.

  • exportar el archivo agregando una nueva ruta

    •  

Buscar archivo csv en la ruta creada…

 

(c) 2020 por SIFC.O, S.A.