REST & JERSEYFernando RománOriol RamírezAlbert Raventós
INTRODUCCIÓN• REST == “Representational State Transfer”• Es una Arquitectura de servicios distribuidos basada en  estándar...
SERVICIOS RESTFul• Un servicio es REST si cumple estas 6 Restricciones:  •   Uniforme  •   Sin estados (Stateless)  •   Mo...
BASADO EN RECURSOS•   Objetos vs. Acciones•   Nombres vs. Verbos•   SOAP - Simple Object Access Protocol•   Recursos ident...
REPRESENTACIONES• CRUD: Create – Read – Update – Delete• REST va más alla porque soporta muchas representaciones  para un ...
Uniform Interface I•   Define la interfaz entre cliente y servidor•   Simplifica y separa la arquitectura•   Es fundamenta...
Uniform Interface II•   Basado en recursos•   La manipulación de los recursos a través de representaciones•   Mensajes aut...
STATELESS• El servidor no contiene estados de cliente• Cada request contiene suficiente información para procesar el  mens...
Client-Server• Suponemos que es un sistema desconectado• Separación de problemas• Una interfaz uniforme es la conexión ent...
CACHE• Las respuestas del servidor (representaciones) se pueden  cachear  • Implicitly  • Explicitly  • Negociated
LAYERED SYSTEM• El cliente no puede asumir una conexión directa con el  servidor• Software o hardware intermediarios entre...
CODE ON DEMAND•   Servidor puede extender temporalmente cliente•   Transferir la lógica al cliente•   El cliente calcula• ...
REST vs RPC• REST: Proporciona al cliente una interfaz sencilla de acceso a  los recursos, 4 acciones posibles.• RPC: Prop...
Ejemplo REST vs RPC• Cómo obtener la lista de ciudades de España:• RPC: listcities(Spain)• REST: GET a la URL  http://www....
REST vs SOAP• SOAP también está orientado a objetos pero no existe un  conjunto de operaciones estándar.• Cada sistema SOA...
CONCLUSIONES• Para que un servicio sea RESTFul debe cumplir todas las  limitaciones• Cumplir con REST nos permite obtener ...
Jersey• Una manera de aplicar REST en Java.
Jersey• Facilita la manera de obtener los objetos.  • Se puede combinar con JSON para enviarlos• Ejemplo• REST puede ser u...
Upcoming SlideShare
Loading in …5
×

Seminario IV: REST & Jersey

1,038 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,038
On SlideShare
0
From Embeds
0
Number of Embeds
451
Actions
Shares
0
Downloads
11
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Seminario IV: REST & Jersey

  1. 1. REST & JERSEYFernando RománOriol RamírezAlbert Raventós
  2. 2. INTRODUCCIÓN• REST == “Representational State Transfer”• Es una Arquitectura de servicios distribuidos basada en estándares web y HTTP• Buenas prácticas para servicios distribuidos• Descrita en por Roy Fielding en el año 2000• Basada en recursos• Los recursos pueden tener diferentes representaciones
  3. 3. SERVICIOS RESTFul• Un servicio es REST si cumple estas 6 Restricciones: • Uniforme • Sin estados (Stateless) • Modelo Cliente-Servidor • Cacheable • Sistema bajado en Capas (Layered System) • Ejecución de código bajo demanda
  4. 4. BASADO EN RECURSOS• Objetos vs. Acciones• Nombres vs. Verbos• SOAP - Simple Object Access Protocol• Recursos identificados por IDs únicas(URIs) • Múltiples URIs pueden apuntar a un recurso pero cada URI solo puede apuntar a un recurso.
  5. 5. REPRESENTACIONES• CRUD: Create – Read – Update – Delete• REST va más alla porque soporta muchas representaciones para un mismo recurso: • XML, PDF, PNG, JSON, HTML, TEXTO…• Cada recurso tiene un estado interno que no puede ser accedido directamente desde el exterior• Una representación es el formato de datos utilizado para la transferencia del estado público de un recurso.• Diferentes formatos de representación pueden proporcionar diferentes datos de un recurso.
  6. 6. Uniform Interface I• Define la interfaz entre cliente y servidor• Simplifica y separa la arquitectura• Es fundamental para el diseño RESTful• Significa: • HTTP verbs (GET, PUT, POST, DELETE) • URIs (nombres de recursos) • HTTP response (status, body)
  7. 7. Uniform Interface II• Basado en recursos• La manipulación de los recursos a través de representaciones• Mensajes auto-descriptivos• Hypermedia as the Engine of Application State (HATEOAS)
  8. 8. STATELESS• El servidor no contiene estados de cliente• Cada request contiene suficiente información para procesar el mensaje• Mensajes autp-descriptivos• Cualquier estado de sesión es ayudar en el cliente
  9. 9. Client-Server• Suponemos que es un sistema desconectado• Separación de problemas• Una interfaz uniforme es la conexión entre ambos lados
  10. 10. CACHE• Las respuestas del servidor (representaciones) se pueden cachear • Implicitly • Explicitly • Negociated
  11. 11. LAYERED SYSTEM• El cliente no puede asumir una conexión directa con el servidor• Software o hardware intermediarios entre el cliente y el servidor• Mejora la escalabilidad
  12. 12. CODE ON DEMAND• Servidor puede extender temporalmente cliente• Transferir la lógica al cliente• El cliente calcula• Por ejemplo: • Java applets • JavaScript• La única restricción opcional
  13. 13. REST vs RPC• REST: Proporciona al cliente una interfaz sencilla de acceso a los recursos, 4 acciones posibles.• RPC: Proporciona gran cantidad de acciones (metodos) a ejecutar sobre los recursos.
  14. 14. Ejemplo REST vs RPC• Cómo obtener la lista de ciudades de España:• RPC: listcities(Spain)• REST: GET a la URL http://www.example.org/service?country=Spain • Generación dinámica de representaciones • URIs Opacas vs URIs Constructivas
  15. 15. REST vs SOAP• SOAP también está orientado a objetos pero no existe un conjunto de operaciones estándar.• Cada sistema SOAP requiere de un cliente que implemente el conjunto de operaciones que soporta.
  16. 16. CONCLUSIONES• Para que un servicio sea RESTFul debe cumplir todas las limitaciones• Cumplir con REST nos permite obtener servicios distribuidos • Escalables • Simples • Robustos
  17. 17. Jersey• Una manera de aplicar REST en Java.
  18. 18. Jersey• Facilita la manera de obtener los objetos. • Se puede combinar con JSON para enviarlos• Ejemplo• REST puede ser una manera útil y clara para pasar objetos a otros dispositivos (android, clientes de consola, etc);

×