23 Feb 2015

API REST

API REST

REpresentational State Transfer (REST) es una arquitectura que permite, utilizando el protocolo HTTP, crear servicios y aplicaciones que pueden ser consumidos por cualquier dispositivo o cliente que entienda el protocolo. Esto hace que su uso sea independiente de la plataforma o lenguaje del que el cliente dependa.
La idea, es crear segmentos de código en el servidor que puedan ser invocados desde una URL y que estos códigos determinen la operación a realizar en base al método con que se invoque.
Imaginemos un control de usuarios, la url para que sea invocado será:

http://localhost/usuarios

Y la operación de alta, baja o cambio, será determinada según el método HTTP con que se invoque la ruta:

POST - alta de usuario
PUT - actualización de usuario
DELETE - baja de usuario
GET - lectura de datos de usuario

A diferencia de otros protocolos de uso de webservices REST, quita de la URI la acción que se va a realizar, es decir, al consumir un servicio SOAP, es posible que se deba invocar una ruta como:

http://localhost/usuarios/alta

Así se facilita que los clientes que se enlacen a nuestra aplicación deban conocer solo pocas rutas definidas por el recurso con que quieren operar.
La otra parte que da nombre a esta arquitectura es la respuesta que se entrega al cliente. Estas se hacen utilizando los códigos de estado que el propio protocolo HTTP otorga.
Todos conocemos el típico error 404 de cuando una página web no fue localizada, ese es un código de estado que el servidor entrega al navegador, así pues, al utilizar un código REST, hay que devolver al cliente un estado que indique lo que sucedió y que es independiente a los datos que puedan o no entregarse.
Para esto no hay que inventar el hilo negro, simplemente utilizar los ya estandarizados por el protocolo HTTP, por ejemplo:

200 - operación exitosa
201 - elemento creado
202 - operación recibida pero no aplicada
400 - error de datos en la operación
401 - sin permisos para la operación
404 - se invoca una operación no existente

Con esta base se puede diseñar toda una API qué sea CRUD (Creación Lectura Actualización Borrado) y que sea invocada por cualquier cliente.
¿Que diferencia existe entre la implementación de este esquema a la típica programación de un sistema completo en un lenguaje script?

Escalabilidad.

Hoy en día es un grave error diseñar aplicaciones qué se enfoquen a resolver el problema actual sin pensar en el crecimiento futuro y su integración con otros sistemas, por lo que el uso de una API REST toma un peso prioritario a considerar.

Artículos relacionados