ACERCA DE: API REST

< script src=”my own” title=”acerca de api rest” >

Para un título que no deja nada a la imaginación, es mejor poner un poco de música XD .

Pese a la gran cantidad de información que existe en internet respecto a este tema, pareciera que aún persisten dudas en cuanto a conceptos sobre API REST. Al respecto, hice una presentación (que no alcancé a presentar, valga la “rebuznancia” 😥 )

¿Qué NO es API REST?

Antes de empezar, aclaremos algo, una API REST:

  1. NO es un CRUD…
  2. NO es una aplicación…
  3. NO es un lenguaje de programación…
  4. NO es un protocolo…
  5. NO es una API…

Cada vez que oigo alguna de las de arriba es como…

Aclarado esto, hablemos pues de API REST 🐻

¿Qué SI es API REST?

  1. REpresentational State Transfer (Transferencia de Estado Representacional).
  2. Es un estilo arquitectónico.
  3. Tiene su propia semántica, independiente de los lenguajes de programación.
  4. Basado en el Protocolo HTTP.
  5. Cualquier API puede o no, estar basada en éste.
  6. Creado por Roy Fielding, PhD en Computación de la Universidad Irvin de California, en el año 2000.
  7. Ideal para sistemas distribuidos.

En general, API REST posee 4 características distintivas:

  1. Cliente-Servidor: Todas las API REST [deben usar] usan arquitectura Cliente-Servidor.
  2. No posee estados: El manejo de las variables y de su estado durante las transacciones no es guardado durante la misma, es decir, la transacción contiene todos los datos necesarios para ejecutarse.
  3. Recursos uniformes y bien definidos: Es regla general que cada fuente de datos posea su definición específica (Ejemplo: http://dominio.com/fuentedatos/proceso?parametro1=valor1 ).
  4. Sintaxis universal de acceso a recursos: Utiliza la sintaxis de identificación de acceso a recursos del protocolo HTTP/HTTPS 1.1 (próximamente 2.0), esto es, al menos, los verbos HTTP GET, POST, PUT y DELETE.

Existen 4 tipos de API REST actualmente:

Tipo Recurso Petición/
Difusión
Ancho de Banda/
Transacciones
Rendimiento
Orientada a Datos Colecciones de datos preprocesados Rápida/Lenta Poco/Muy Alto Alto
Orientada a Servicios Métodos que arrojan datos Lenta/Muy lenta Mucho/Alto Depende de la conexión cliente-servidor
Orientada a Hypermedia Multimedia (video, audio, streamings) Lenta/Muy rápida Mucho/Muy bajo Bajo (generalmente cacheado)
Orientada a Detección Colecciones de datos sin procesar “Tiempo real” Mucho/Muy alto Muy alto

La clasificación anterior responde a varios parámetros, a saber:

  • RECURSO: Corresponde a la forma de los datos que almacena o procesa la API REST.
  • PETICIÓN/DIFUSIÓN: La petición corresponde a la velocidad con la que los datos son accedidos en general desde el cliente, y la difusión corresponde a la velocidad con la que la API REST es capaz de servir su información a múltiples clientes.
  • ANCHO DE BANDA/TRANSACCIONES: El ancho de banda corresponde al consumo que requiere normalmente la API REST para responder a peticiones, mientras que las transacciones corresponde a la tasa de transferencia de paquetes HTTP desde el servidor hacia el cliente (diferente del parámetro DIFUSIÓN).
  • RENDIMIENTO: Corresponde únicamente al volumen general de información que procesa y envía la API REST en términos de la velocidad de conexión.

Era importante aclararlo de forma resumida, ya que muchas veces, no hay una fuente de información consistente… (si, Wikipedia, hablo de ti… 👿 ).

Espero sea útil para referencias futuras de consulta rápida… 😉

</script>

Anuncios