API ¿qué es y para qué sirve?

Lectura Tiempo de lectura: 9 minutos.
Tomás Ledo
7 de diciembre de 2016

Sin entrar en demasiados tecnicismos, daremos una definición medio formal de lo que son: La interfaz de programación de aplicaciones, abreviada como API del inglés (Application Programming Interface) , es un conjunto de subrutinas, funciones y procedimientos que ofrece ciertos «servicios» para ser utilizados por otro software como una capa de abstracción.


Vamos a ver como de una manera muy sencilla podemos consultar los dominios que tenemos en nuestro Panel de gestión preferido 😉 @neodigit que nos ofrece un API https://developers.neodigit.net para poder realizar algunas tareas desde nuestra linea de comandos (POWERSHELL) en este caso, que $deity me perdone por hacer esto con Windows, pero me pareció una buena manera de desmitificar su uso… espero que os guste y anime para que os hagáis unos cuantos «scripts» y lo compartáis con nosotros.
Bueno, lo primero es abrir el POWERSHELL ISE. Tiene esta pinta:

Captura de pantalla 2016 12 07 a las 20.44.44
PowerShell ISE


Desde esta línea de comandos tenemos un editor que genera ficheros con extensión .ps1 y añadiendo unas líneas de código como las que siguen, podemos por ejemplo, listar los dominios que tenemos en nuestro panel ordenados por su estado y fecha de caducidad. Solamente pretendo hacer un ejercicio básico, hace casi 20 años que no tiro una sola línea de código 🙂 pero eso es otra historia, para mostrar la potencia del uso de los API y como podemos automatizar, completar la falta de funcionalidad o adaptar a nuestras necesidades determinadas gestiones por su rapidez.

# Script powershell de ejmplo de uso API con neodigit
# Tecnocrática Centro de Datos, SL
# ---
# Fecha: 30/11/2016
# Tecnócrata: Tomás Ledo.
# Descripción: Listar dominios
$server='https://api.neodigit.net'
$version='/v1'
$module = '/domains'
$resource = '/domains'
$format = '.json'
$uri=$server+$version+$module+$resource+$format
$token = @{}
$token.Add('X-TCpanel-Token','9Oj8Abn1ZXmWVyBZuQB4YC17Pw6EZT1yNQR648D8P6LUFbjqoh')
$req = Invoke-RestMethod -Method GET -Uri $uri -Headers $token
$domain = $req.name
$product = $req.product_info
$output = @()
$i = 0
foreach ( $product in $domain ){
 $i ++
 $o = New-Object -TypeName PSObject -Property @{
 Fecha = $req.product_info.product_expiration[$i]
 Estado = $req.product_info.product_status[$i]
 Dominio = $req.name[$i]
 }
 $output += $o
}
$output | Sort-Object -Property fecha

Expliquemos algunos conceptos para que nuestro script de listado de dominios funcione:

  1. Necesitaremos nuestra llave de API o API-Key, que podemos encontrarlas en el panel accediendo a: https://panel.neodigit.net/api-consumers y desde ahí generaremos un «token» o palabra clave que usaremos para las llamadas que hace nuestro script y declaramos en la variable token. Nota: Este «token» del ejemplo es uno generado en mi cuenta y está expirado, no sirve. Como recomendación adicional si podéis además limitar el acceso por IP la cosa quedará «niquelada»:
Captura de pantalla 2016 12 08 a las 0.29.32
Alta consumidores de api
$token = @{}
$token.Add('X-TCpanel-Token','9Oj8Abn1ZXmWVyBZuQB4YC17Pw6EZT1yNQR648D8P6LUFbjqoh')
  • Declaramos el entorno al que lanzaremos nuestras peticiones, no hay mucha mística en estas variables pero las he separado para que veáis como se construye la URL donde cursaremos esas peticiones, recordad que podéis ver la documentación y ejemplos de llamadas en https://developers.neodigit.net:
    $server='https://api.neodigit.net'
    $version='/v1'
    $module = '/domains'
    $resource = '/domains'
    $format = '.json'
    $uri=$server+$version+$module+$resource+$format
  • Cursamos la petición y recogemos los resultados:
    $req = Invoke-RestMethod -Method GET -Uri $uri -Headers $token
  • Preparamos la salida:
    $output = @()
    $i = 0
    foreach ( $product in $domain ){
     $i ++
     $o = New-Object -TypeName PSObject -Property @{
     Fecha = $req.product_info.product_expiration[$i]
     Estado = $req.product_info.product_status[$i]
     Dominio = $req.name[$i]
     }
     $output += $o
    }
  • Y finalmente la sacamos por pantalla ordenada:
    $output | Sort-Object -Property fecha
    
  • Posts relacionados

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *