SlideShare una empresa de Scribd logo
1 de 31
ARQUITECTURA REST
Universidad de Burgos
Burgos, 3 de Diciembre de 2014
Arquitectura REST 2|
Índice
Qué no es REST
Introducción
Restricciónes
Richardson Madurity Model
Rest Anti Patterns
Seguridad
Documentación
Algunos Frameworks Java y PHP
Demo Time
Q&A
Arquitectura REST 3|
REST NO ES …
REST no es un tecnología.
REST no es un framework.
REST no es un patrón de diseño.
REST no es un protocolo.
REST no es un estándar.
Arquitectura REST
Arquitectura REST 4|
¿QUÉ ES REST?
REST is a coordinated set of architectural
constraints that attempts to minimize latency
and network communication while at the same
time maximizing the independence and scalability
of component implementations.
Arquitectura REST
Roy Fielding
Tesis Doctoral
Architectural Styles and the Design of Network-
based Software Architectures, University of
California, Irvine, 2000
Arquitectura REST 5|
DESCRIPCIÓN GENERAL
REST == REpresentational State Transfer
Basado en Recursos (Elemento de información)
Representación (Formato de la información)
Restricciones:
 Client-Server
 Stateless
 Cacheable
 Uniform Interface
 Layered System
 Code-on-demand
Arquitectura REST
Arquitectura REST 6|
RESTRICCIONES: CLIENT-SERVER
Separación de responsabilidades.
Mejora la portabilidad a distintas plataformas.
Aumento de la escalabilidad.
Componentes evolucionan de forma
independiente.
Arquitectura REST
Arquitectura REST 7|
RESTRICCIONES: STATELESS
Cada petición contiene toda la información
necesaria para que el servidor la procese.
El estado de sesión se mantiene totalmente en el
cliente.
Componentes evolucionan de forma
independiente.
Arquitectura REST
Arquitectura REST 8|
RESTRICCIONES: CACHEABLE
Respuestas del servidor (representaciones)
son cacheables:
 Implícita
 Explicita
 Negociables
Arquitectura REST
Arquitectura REST 9|
RESTRICCIONES: UNIFORM INTERFACE
Principal característica diferenciadora frente a
otras arquitecturas.
Las implementaciones se separan de los
servicios que proporcionan
¿Cómo?
 Verbos HTTP
 URIs (nombres de recursos)
 Respuestas HTTP (status, body)
Arquitectura REST
Arquitectura REST 10|
RESTRICCIONES: LAYERED SYSTEM
Los servicios REST están orientados a la
escalabilidad.
El cliente no sabe si la petición se realiza
directamente a un servidor, un sistema de
cachés o por ejemplo un balanceador que se
encarga de redirigirlo hacia un servidor final.
Arquitectura REST
Arquitectura REST 11|
RESTRICCIONES: CODE-ON-DEMAND
Servidor puede extender o personalizar
temporalmente la funcionalidad del cliente.
Transferencia de la lógica al cliente.
Cliente ejecuta la lógica.
Restricción opcional
Ejemplos:
 Java Applets
 JavaScript
Arquitectura REST
Arquitectura REST 12|
OBJETIVOS
Simplicidad
Escalabilidad
Portabilidad
Independizar el cliente/servidor
Sintaxis “universal”
Sistemas tolerantes al cambio
Minimizar la latencia
Arquitectura REST
Arquitectura REST 13|
RICHARDSON MATURITY MODEL
Arquitectura REST
Arquitectura REST 14|
LEVEL 0: THE SWAMP OF POX (PLAIN OLD XML)
Arquitectura REST
Una URI, un Método HTTP
HTTP como un sistema de transporte para
interacciones remotos
Basado en Remote Procedure Invocation.
XML-RPC y SOAP
Arquitectura REST 15|
LEVEL 1: RESOURCES
Arquitectura REST
URI (Uniform Resource Identifier)
Los nombres de URI no deben implicar una
acción
Evitar uso de verbos.
Deben ser Únicas
Independientes del formato.
Deben mantener una jerarquía lógica.
Los filtrados de información de un recurso no se
hacen en la URI.
Arquitectura REST 16|
LEVEL 1: RESOURCES
Arquitectura REST
Arquitectura REST 17|
LEVEL 1: RESOURCES
Arquitectura REST
Arquitectura REST 18|
LEVEL 2: HTTP VERBS
GET para obtener la representacion/es de un
recurso/s
POST para crear un recurso
PUT para modificar un recurso
DELETE para eliminar un recuerso
PATCH para actualizar parcialmente un recurso
 Uso de HTTP Status Code para indicar el resultado:
 HTTP/1.1 2xx Petición Correcta
 HTTP/1.1 4xx Errores del Cliente
 HTTP/1.1 5xx Errores en el Servidor
Arquitectura REST
Arquitectura REST 19|
LEVEL 2: HTTP VERBS
Arquitectura REST
Arquitectura REST 20|
LEVEL 3: HYPERMEDIA CONTROLS
Arquitectura REST
HATEOS (Hypermedia as the Engine of Application
State)
API debe poder ser navegable sin documentación
Arquitectura REST 21|
LEVEL 3: HYPERMEDIA CONTROLS
Arquitectura REST
Arquitectura REST 22|
LEVEL 3: HYPERMEDIA CONTROLS (EJEMPLO)
Arquitectura REST
Arquitectura REST 23|
LEVEL 3: HYPERMEDIA CONTROLS (EJEMPLO)
Arquitectura REST
Arquitectura REST 24|
REST ANTI-PATTERS BY STEFAN TILKOV
Todas las peticiones a través de GET
Todas las peticiones mediante POST
Cache, ¿qué cache?????
No utilizar códigos de respuesta
Mal uso de cookies
Olvidarnos de Hypermedia
Haciendo caso omiso de los tipos MIME
Mal uso de las cabeceras HTTP
Arquitectura REST
Arquitectura REST 25|
SEGURIDAD
Arquitectura REST
Recordad que nuestros servicios web deben ser
stateless (sin estado):
 No utilizar cookies o HTTP Session.
 El cliente debe enviar las credenciales de
autenticación en cada llamada.
Opciones:
 HTTP Security
 OAuth
Arquitectura REST 26|
DOCUMENTACIÓN
Arquitectura REST
JavadocTagsForExtendedWADL
 Permite añadir más información al WADL.
 Se puede aplicar un transformada para generar
documentación ad hoc.
Swagger
 Ampliamente extendido y estable.
 Independiente del lenguaje de programación.
 UI para probar los servicios.
Arquitectura REST 27|
ALGUNOS FRAMEWORKS JAVA Y PHP
Arquitectura REST
Arquitectura REST 28|
https://github.com/hfuentepe/basic-jersey.git
Arquitectura REST 29|
Arquitectura REST 30|
LECTURAS RECOMENDADAS
Arquitectura REST
Héctor Fuente Pérez
fuenteperez.es
@hfuentepe

Más contenido relacionado

La actualidad más candente

RESTful services
RESTful servicesRESTful services
RESTful services
gouthamrv
 

La actualidad más candente (20)

RESTful services
RESTful servicesRESTful services
RESTful services
 
Patrones de diseño de GoF
Patrones de diseño de GoFPatrones de diseño de GoF
Patrones de diseño de GoF
 
Volley in android
Volley in androidVolley in android
Volley in android
 
Rest
RestRest
Rest
 
Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)
Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)
Tema2: Tecnologías de desarrollo web (Desarrollo Aplicaciones Web)
 
Patrones diseño y arquitectura
Patrones diseño y arquitecturaPatrones diseño y arquitectura
Patrones diseño y arquitectura
 
Introduction to spring boot
Introduction to spring bootIntroduction to spring boot
Introduction to spring boot
 
Rest API
Rest APIRest API
Rest API
 
API for Beginners
API for BeginnersAPI for Beginners
API for Beginners
 
Introduction to the Web API
Introduction to the Web APIIntroduction to the Web API
Introduction to the Web API
 
JQuery selectors
JQuery selectors JQuery selectors
JQuery selectors
 
Clean architecture
Clean architectureClean architecture
Clean architecture
 
Introduction to GraphQL
Introduction to GraphQLIntroduction to GraphQL
Introduction to GraphQL
 
Presentacion Patrones Creacionales
Presentacion Patrones CreacionalesPresentacion Patrones Creacionales
Presentacion Patrones Creacionales
 
Angular
AngularAngular
Angular
 
Understanding REST
Understanding RESTUnderstanding REST
Understanding REST
 
Building Automated REST APIs with Python
Building Automated REST APIs with PythonBuilding Automated REST APIs with Python
Building Automated REST APIs with Python
 
Restful api
Restful apiRestful api
Restful api
 
Arquitetura de Software Visão Geral
Arquitetura de Software Visão GeralArquitetura de Software Visão Geral
Arquitetura de Software Visão Geral
 
MVC
MVCMVC
MVC
 

Destacado

REST, JERSEY & SOAP
REST, JERSEY & SOAPREST, JERSEY & SOAP
REST, JERSEY & SOAP
ea2014G3
 
Arquitectura de software para aplicaciones móviles
Arquitectura de software para aplicaciones móvilesArquitectura de software para aplicaciones móviles
Arquitectura de software para aplicaciones móviles
Sergio Castillo Yrizales
 
Arquitecturas de pizarra o repositório
Arquitecturas de pizarra o repositórioArquitecturas de pizarra o repositório
Arquitecturas de pizarra o repositório
rehoscript
 
Rest presentation
Rest  presentationRest  presentation
Rest presentation
srividhyau
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicos
landeta_p
 
UML - Casos de Uso y Diagramas de Clase
UML - Casos de Uso y Diagramas de ClaseUML - Casos de Uso y Diagramas de Clase
UML - Casos de Uso y Diagramas de Clase
Guillermo Díaz
 
Learn REST API with Python
Learn REST API with PythonLearn REST API with Python
Learn REST API with Python
Larry Cai
 

Destacado (20)

REST, JERSEY & SOAP
REST, JERSEY & SOAPREST, JERSEY & SOAP
REST, JERSEY & SOAP
 
Automatic API REST Droidcon
Automatic API REST DroidconAutomatic API REST Droidcon
Automatic API REST Droidcon
 
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVCSEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
 
Taller Android Party: Automatic API REST + Notificaciones PUSH
Taller Android Party: Automatic API REST + Notificaciones PUSHTaller Android Party: Automatic API REST + Notificaciones PUSH
Taller Android Party: Automatic API REST + Notificaciones PUSH
 
Introducción a REST - SymfonyVLC
Introducción a REST - SymfonyVLCIntroducción a REST - SymfonyVLC
Introducción a REST - SymfonyVLC
 
RAML
RAMLRAML
RAML
 
Spring Batch - Lessons Learned out of a real life banking system.
Spring Batch - Lessons Learned out of a real life banking system.Spring Batch - Lessons Learned out of a real life banking system.
Spring Batch - Lessons Learned out of a real life banking system.
 
Arquitectura de software para aplicaciones móviles
Arquitectura de software para aplicaciones móvilesArquitectura de software para aplicaciones móviles
Arquitectura de software para aplicaciones móviles
 
Arquitecturas de pizarra o repositório
Arquitecturas de pizarra o repositórioArquitecturas de pizarra o repositório
Arquitecturas de pizarra o repositório
 
Arquitectura API Rest.
Arquitectura API Rest.Arquitectura API Rest.
Arquitectura API Rest.
 
Rest presentation
Rest  presentationRest  presentation
Rest presentation
 
Why vREST?
Why vREST?Why vREST?
Why vREST?
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicos
 
Arquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EEArquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EE
 
Fastest Growing Web API Categories: Last 6 Months
Fastest Growing Web API Categories: Last 6 MonthsFastest Growing Web API Categories: Last 6 Months
Fastest Growing Web API Categories: Last 6 Months
 
ProgrammableWeb's eSignature API Research Report
ProgrammableWeb's eSignature API Research ReportProgrammableWeb's eSignature API Research Report
ProgrammableWeb's eSignature API Research Report
 
UML - Casos de Uso y Diagramas de Clase
UML - Casos de Uso y Diagramas de ClaseUML - Casos de Uso y Diagramas de Clase
UML - Casos de Uso y Diagramas de Clase
 
Principios de diseño de la arquitectura del software
Principios de diseño de la arquitectura del softwarePrincipios de diseño de la arquitectura del software
Principios de diseño de la arquitectura del software
 
Arquitectura Orientada a Servicios (SOA)
Arquitectura Orientada  a Servicios (SOA)Arquitectura Orientada  a Servicios (SOA)
Arquitectura Orientada a Servicios (SOA)
 
Learn REST API with Python
Learn REST API with PythonLearn REST API with Python
Learn REST API with Python
 

Similar a Arquitectura REST

Introducción a aplicaciones web.
Introducción a aplicaciones web.Introducción a aplicaciones web.
Introducción a aplicaciones web.
camilaml
 

Similar a Arquitectura REST (20)

10- Unidad 3: Webservices - 3.2 Uso de Web services (Introducción, Caracterís...
10- Unidad 3: Webservices - 3.2 Uso de Web services (Introducción, Caracterís...10- Unidad 3: Webservices - 3.2 Uso de Web services (Introducción, Caracterís...
10- Unidad 3: Webservices - 3.2 Uso de Web services (Introducción, Caracterís...
 
10-Unidad 3: Diseños de Vista-3.2 Usos Web Services
10-Unidad 3: Diseños de Vista-3.2 Usos Web Services10-Unidad 3: Diseños de Vista-3.2 Usos Web Services
10-Unidad 3: Diseños de Vista-3.2 Usos Web Services
 
Introduccion ws rest
Introduccion ws restIntroduccion ws rest
Introduccion ws rest
 
Integración de Tecnologías y Plataformas.pptx
Integración de Tecnologías y Plataformas.pptxIntegración de Tecnologías y Plataformas.pptx
Integración de Tecnologías y Plataformas.pptx
 
REST
RESTREST
REST
 
RES - Transferencia de Estado Representacional
RES - Transferencia de Estado RepresentacionalRES - Transferencia de Estado Representacional
RES - Transferencia de Estado Representacional
 
Introducción a aplicaciones web.
Introducción a aplicaciones web.Introducción a aplicaciones web.
Introducción a aplicaciones web.
 
S4-PD2-2.2. REST
S4-PD2-2.2. RESTS4-PD2-2.2. REST
S4-PD2-2.2. REST
 
SOA Latam Workshop: Comparison Dropwizard, ratpack & Spring Boot
SOA Latam Workshop: Comparison Dropwizard, ratpack & Spring BootSOA Latam Workshop: Comparison Dropwizard, ratpack & Spring Boot
SOA Latam Workshop: Comparison Dropwizard, ratpack & Spring Boot
 
Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con REST
 
Cliente Servidor
Cliente ServidorCliente Servidor
Cliente Servidor
 
13-Unidad 3. WebServices-3.3. Inicio de Proyecto (Desarrollo)
13-Unidad 3. WebServices-3.3. Inicio de Proyecto (Desarrollo)13-Unidad 3. WebServices-3.3. Inicio de Proyecto (Desarrollo)
13-Unidad 3. WebServices-3.3. Inicio de Proyecto (Desarrollo)
 
API REST conceptos (Rails-api)
API REST conceptos (Rails-api)API REST conceptos (Rails-api)
API REST conceptos (Rails-api)
 
105.desarrollo rest-con-rails
105.desarrollo rest-con-rails105.desarrollo rest-con-rails
105.desarrollo rest-con-rails
 
Rest clase 4 - curso front-end 2014 - open webinars
Rest   clase 4 - curso front-end 2014 - open webinarsRest   clase 4 - curso front-end 2014 - open webinars
Rest clase 4 - curso front-end 2014 - open webinars
 
Charla REST API
Charla REST APICharla REST API
Charla REST API
 
GraphQL Reactivo
GraphQL ReactivoGraphQL Reactivo
GraphQL Reactivo
 
ingenieria web.pptx
ingenieria web.pptxingenieria web.pptx
ingenieria web.pptx
 
Rest vswebservices
Rest vswebservicesRest vswebservices
Rest vswebservices
 
Paper ieee
Paper ieeePaper ieee
Paper ieee
 

Arquitectura REST

  • 1. ARQUITECTURA REST Universidad de Burgos Burgos, 3 de Diciembre de 2014
  • 2. Arquitectura REST 2| Índice Qué no es REST Introducción Restricciónes Richardson Madurity Model Rest Anti Patterns Seguridad Documentación Algunos Frameworks Java y PHP Demo Time Q&A
  • 3. Arquitectura REST 3| REST NO ES … REST no es un tecnología. REST no es un framework. REST no es un patrón de diseño. REST no es un protocolo. REST no es un estándar. Arquitectura REST
  • 4. Arquitectura REST 4| ¿QUÉ ES REST? REST is a coordinated set of architectural constraints that attempts to minimize latency and network communication while at the same time maximizing the independence and scalability of component implementations. Arquitectura REST Roy Fielding Tesis Doctoral Architectural Styles and the Design of Network- based Software Architectures, University of California, Irvine, 2000
  • 5. Arquitectura REST 5| DESCRIPCIÓN GENERAL REST == REpresentational State Transfer Basado en Recursos (Elemento de información) Representación (Formato de la información) Restricciones:  Client-Server  Stateless  Cacheable  Uniform Interface  Layered System  Code-on-demand Arquitectura REST
  • 6. Arquitectura REST 6| RESTRICCIONES: CLIENT-SERVER Separación de responsabilidades. Mejora la portabilidad a distintas plataformas. Aumento de la escalabilidad. Componentes evolucionan de forma independiente. Arquitectura REST
  • 7. Arquitectura REST 7| RESTRICCIONES: STATELESS Cada petición contiene toda la información necesaria para que el servidor la procese. El estado de sesión se mantiene totalmente en el cliente. Componentes evolucionan de forma independiente. Arquitectura REST
  • 8. Arquitectura REST 8| RESTRICCIONES: CACHEABLE Respuestas del servidor (representaciones) son cacheables:  Implícita  Explicita  Negociables Arquitectura REST
  • 9. Arquitectura REST 9| RESTRICCIONES: UNIFORM INTERFACE Principal característica diferenciadora frente a otras arquitecturas. Las implementaciones se separan de los servicios que proporcionan ¿Cómo?  Verbos HTTP  URIs (nombres de recursos)  Respuestas HTTP (status, body) Arquitectura REST
  • 10. Arquitectura REST 10| RESTRICCIONES: LAYERED SYSTEM Los servicios REST están orientados a la escalabilidad. El cliente no sabe si la petición se realiza directamente a un servidor, un sistema de cachés o por ejemplo un balanceador que se encarga de redirigirlo hacia un servidor final. Arquitectura REST
  • 11. Arquitectura REST 11| RESTRICCIONES: CODE-ON-DEMAND Servidor puede extender o personalizar temporalmente la funcionalidad del cliente. Transferencia de la lógica al cliente. Cliente ejecuta la lógica. Restricción opcional Ejemplos:  Java Applets  JavaScript Arquitectura REST
  • 12. Arquitectura REST 12| OBJETIVOS Simplicidad Escalabilidad Portabilidad Independizar el cliente/servidor Sintaxis “universal” Sistemas tolerantes al cambio Minimizar la latencia Arquitectura REST
  • 13. Arquitectura REST 13| RICHARDSON MATURITY MODEL Arquitectura REST
  • 14. Arquitectura REST 14| LEVEL 0: THE SWAMP OF POX (PLAIN OLD XML) Arquitectura REST Una URI, un Método HTTP HTTP como un sistema de transporte para interacciones remotos Basado en Remote Procedure Invocation. XML-RPC y SOAP
  • 15. Arquitectura REST 15| LEVEL 1: RESOURCES Arquitectura REST URI (Uniform Resource Identifier) Los nombres de URI no deben implicar una acción Evitar uso de verbos. Deben ser Únicas Independientes del formato. Deben mantener una jerarquía lógica. Los filtrados de información de un recurso no se hacen en la URI.
  • 16. Arquitectura REST 16| LEVEL 1: RESOURCES Arquitectura REST
  • 17. Arquitectura REST 17| LEVEL 1: RESOURCES Arquitectura REST
  • 18. Arquitectura REST 18| LEVEL 2: HTTP VERBS GET para obtener la representacion/es de un recurso/s POST para crear un recurso PUT para modificar un recurso DELETE para eliminar un recuerso PATCH para actualizar parcialmente un recurso  Uso de HTTP Status Code para indicar el resultado:  HTTP/1.1 2xx Petición Correcta  HTTP/1.1 4xx Errores del Cliente  HTTP/1.1 5xx Errores en el Servidor Arquitectura REST
  • 19. Arquitectura REST 19| LEVEL 2: HTTP VERBS Arquitectura REST
  • 20. Arquitectura REST 20| LEVEL 3: HYPERMEDIA CONTROLS Arquitectura REST HATEOS (Hypermedia as the Engine of Application State) API debe poder ser navegable sin documentación
  • 21. Arquitectura REST 21| LEVEL 3: HYPERMEDIA CONTROLS Arquitectura REST
  • 22. Arquitectura REST 22| LEVEL 3: HYPERMEDIA CONTROLS (EJEMPLO) Arquitectura REST
  • 23. Arquitectura REST 23| LEVEL 3: HYPERMEDIA CONTROLS (EJEMPLO) Arquitectura REST
  • 24. Arquitectura REST 24| REST ANTI-PATTERS BY STEFAN TILKOV Todas las peticiones a través de GET Todas las peticiones mediante POST Cache, ¿qué cache????? No utilizar códigos de respuesta Mal uso de cookies Olvidarnos de Hypermedia Haciendo caso omiso de los tipos MIME Mal uso de las cabeceras HTTP Arquitectura REST
  • 25. Arquitectura REST 25| SEGURIDAD Arquitectura REST Recordad que nuestros servicios web deben ser stateless (sin estado):  No utilizar cookies o HTTP Session.  El cliente debe enviar las credenciales de autenticación en cada llamada. Opciones:  HTTP Security  OAuth
  • 26. Arquitectura REST 26| DOCUMENTACIÓN Arquitectura REST JavadocTagsForExtendedWADL  Permite añadir más información al WADL.  Se puede aplicar un transformada para generar documentación ad hoc. Swagger  Ampliamente extendido y estable.  Independiente del lenguaje de programación.  UI para probar los servicios.
  • 27. Arquitectura REST 27| ALGUNOS FRAMEWORKS JAVA Y PHP Arquitectura REST
  • 30. Arquitectura REST 30| LECTURAS RECOMENDADAS Arquitectura REST