Introducción a los servicios web RESTful (actualizado 17/09/2013)

REST - Actualizado 17/09/2013

¿Qué es?

REST (Representational State Transfer) define un set de principios arquitectónicos por los cuales se diseñan servicios web haciendo foco en los recursos del sistema, incluyendo cómo se accede al estado de dichos recursos y cómo se transfieren por HTTP hacia clientes escritos en diversos lenguajes.

Los 4 principios de REST

  • Utiliza los métodos HTTP de manera explícita
  • No mantiene estado
  • Expone URIs con forma de directorios
  • Transfiere XML, JavaScript Object Notation (JSON), o ambos.

1. Utiliza los métodos HTTP de manera explícita:

  • POST para crear un recurso en el servidor.
  • GET para obtener un recurso.
  • PUT para cambiar el estado de un recurso o actualizarlo.
  • DELETE para eleminar un recurso.
"Una falla de diseño poco afortunada que tienen muchas APIs web es el uso de métodos HTTP para otros propósitos. (...)"

2. No mantiene estado

Para mantener un rendimiento óptimo en el servidor y garantizar la disponibilidad del servidor, el cliente debe realizarle al servidor peticiones completas. Debe incluir dentro de su consulta todos los parámetros, contexto y datos que el servidor necesita para generar una respuesta.
"De esta manera, el no mantener estado mejora el rendimiento de los servicios web y simplifica el diseño e implementación de los componentes del servidor, ya que la ausencia de estado en el servidor elimina la necesidad de sincronizar los datos de la sesión con una aplicación externa."
 "Los servicios web REST necesitan escalar para poder satisfacer una demanda en constante crecimiento. Se usan clusters de servidores con balanceadores de carga y alta disponibilidad, proxies, y gateways de manera de conformar una topología serviciable, que permita transferir peticiones de un equipo a otro para disminuir el tiempo total de respuesta (...). El uso de servidores intermedios para mejorar la escalabilidad hace necesario que los clientes de servicios web REST envien peticiones completas e independientes (...) de manera que los componentes en los servidores intermedios puedan redireccionar y gestionar la carga sin mantener el estado localmente entre las peticiones."

3. Expone URIs con forma de directorios

Para hacer que el servicio web sea intuitivo, se deben exponer las URIs en forma de directorios anidados. Es recomendable hacerlo todo usando letras minúsculas.

Ejemplo:
http://www.miservicio.org/discusion/2008/12/23/{tema}
Guía para crear URIs:

  • Ocultar la tecnología usada en el servidor que aparecería como extensión de archivos (.jsp, .php, .asp, etc.), de manera de poder portar la solución a otra tecnología sin cambiar las URI.
  • Mantener todo en minúsculas.
  • Sustituir los espacios con guiones o guiones bajos (uno u otro).
  • Evitar el uso de strings de consulta.
  • En vez de usar un 404 Not Found si la petición es una URI parcial, devolver una página o un recurso predeterminado como respuesta. 

4. Transfiere JSON, XML o ambos.

Para que el servicio sea compatible con todas las tecnologías posibles, las respuestas deben ser en JSON o en XML, dado que son lenguajes comunes y fáciles de entender.

Fuente:

Introducción a los servicios web RESTful vía @ideasagiles

http://www.dosideas.com/noticias/java/314-introduccion-a-los-servicios-web-restful.html

Comentarios

Entradas populares de este blog

Ordenar lista en python - Super fácil!