SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

Unidad 3 Modelamiento De Datos Conceptual
Unidad 3 Modelamiento De Datos ConceptualUnidad 3 Modelamiento De Datos Conceptual
Unidad 3 Modelamiento De Datos ConceptualSergio Sanchez
 
Fase 2 modelado del análisis de i web
Fase 2 modelado del análisis de i webFase 2 modelado del análisis de i web
Fase 2 modelado del análisis de i webROSA IMELDA GARCIA CHI
 
Building Automated REST APIs with Python
Building Automated REST APIs with PythonBuilding Automated REST APIs with Python
Building Automated REST APIs with PythonJeff Knupp
 
Analisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A ObjetosAnalisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A Objetosyoiner santiago
 
cliente servidor de 3 niveles
cliente servidor de 3 nivelescliente servidor de 3 niveles
cliente servidor de 3 nivelesLupitha Mendoza
 
Arquitectura de cliente-servidor de tres capas
Arquitectura de cliente-servidor de tres capasArquitectura de cliente-servidor de tres capas
Arquitectura de cliente-servidor de tres capasanibalsmit
 
MetodoMadesi_3_03.pdf
MetodoMadesi_3_03.pdfMetodoMadesi_3_03.pdf
MetodoMadesi_3_03.pdfssuserc8112b
 
NoSQL bases de datos no relacionales
NoSQL bases de datos no relacionalesNoSQL bases de datos no relacionales
NoSQL bases de datos no relacionalesAndrés Londoño
 
Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Jose R. Hilera
 
3. modelo entidad relación extendido
3. modelo entidad relación extendido3. modelo entidad relación extendido
3. modelo entidad relación extendidoGalo Anzules
 
Base de datos moviles y federadas
Base de datos moviles y federadasBase de datos moviles y federadas
Base de datos moviles y federadaswilsonuruetaceledon
 

Tendances (20)

Unidad 3 Modelamiento De Datos Conceptual
Unidad 3 Modelamiento De Datos ConceptualUnidad 3 Modelamiento De Datos Conceptual
Unidad 3 Modelamiento De Datos Conceptual
 
Metodologiasad 1
Metodologiasad 1Metodologiasad 1
Metodologiasad 1
 
Modelos de datos
Modelos de datosModelos de datos
Modelos de datos
 
Ingenieria de Software
Ingenieria de SoftwareIngenieria de Software
Ingenieria de Software
 
Fase 2 modelado del análisis de i web
Fase 2 modelado del análisis de i webFase 2 modelado del análisis de i web
Fase 2 modelado del análisis de i web
 
Building Automated REST APIs with Python
Building Automated REST APIs with PythonBuilding Automated REST APIs with Python
Building Automated REST APIs with Python
 
Soap vs rest
Soap vs restSoap vs rest
Soap vs rest
 
SAP Web IDE
SAP Web IDESAP Web IDE
SAP Web IDE
 
Analisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A ObjetosAnalisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A Objetos
 
cliente servidor de 3 niveles
cliente servidor de 3 nivelescliente servidor de 3 niveles
cliente servidor de 3 niveles
 
Arquitectura de cliente-servidor de tres capas
Arquitectura de cliente-servidor de tres capasArquitectura de cliente-servidor de tres capas
Arquitectura de cliente-servidor de tres capas
 
Arquitectura Orientada a Servicios (SOA)
Arquitectura Orientada  a Servicios (SOA)Arquitectura Orientada  a Servicios (SOA)
Arquitectura Orientada a Servicios (SOA)
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
MetodoMadesi_3_03.pdf
MetodoMadesi_3_03.pdfMetodoMadesi_3_03.pdf
MetodoMadesi_3_03.pdf
 
NoSQL bases de datos no relacionales
NoSQL bases de datos no relacionalesNoSQL bases de datos no relacionales
NoSQL bases de datos no relacionales
 
Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)
 
3. modelo entidad relación extendido
3. modelo entidad relación extendido3. modelo entidad relación extendido
3. modelo entidad relación extendido
 
Base de datos moviles y federadas
Base de datos moviles y federadasBase de datos moviles y federadas
Base de datos moviles y federadas
 
Web api
Web apiWeb api
Web api
 
Modelo Requistos
Modelo RequistosModelo Requistos
Modelo Requistos
 

En vedette

REST, JERSEY & SOAP
REST, JERSEY & SOAPREST, JERSEY & SOAP
REST, JERSEY & SOAPea2014G3
 
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 MVCParadigma Digital
 
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 PUSHAlejandro Esquiva Rodriguez
 
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.Raffael Schmid
 
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óvilesSergio Castillo Yrizales
 
Arquitecturas de pizarra o repositório
Arquitecturas de pizarra o repositórioArquitecturas de pizarra o repositório
Arquitecturas de pizarra o repositóriorehoscript
 
Arquitectura API Rest.
Arquitectura API Rest.Arquitectura API Rest.
Arquitectura API Rest.melidevelopers
 
Rest presentation
Rest  presentationRest  presentation
Rest presentationsrividhyau
 
Why vREST?
Why vREST?Why vREST?
Why vREST?vrest_io
 
2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicoslandeta_p
 
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 EECarlos Gavidia-Calderon
 
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 MonthsProgrammableWeb
 
ProgrammableWeb's eSignature API Research Report
ProgrammableWeb's eSignature API Research ReportProgrammableWeb's eSignature API Research Report
ProgrammableWeb's eSignature API Research ReportProgrammableWeb
 
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 ClaseGuillermo Díaz
 
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 softwareJose Patricio Bovet Derpich
 
Learn REST API with Python
Learn REST API with PythonLearn REST API with Python
Learn REST API with PythonLarry Cai
 

En vedette (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
 
Learn REST API with Python
Learn REST API with PythonLearn REST API with Python
Learn REST API with Python
 
JSON and REST
JSON and RESTJSON and REST
JSON and REST
 

Similaire à Arquitectura REST

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...Luis Fernando Aguas Bucheli
 
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 ServicesLuis Fernando Aguas Bucheli
 
Introduccion ws rest
Introduccion ws restIntroduccion ws rest
Introduccion ws reststiankov
 
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.pptxLuisTenorio42
 
RES - Transferencia de Estado Representacional
RES - Transferencia de Estado RepresentacionalRES - Transferencia de Estado Representacional
RES - Transferencia de Estado RepresentacionalRobert Caraguay
 
Introducción a aplicaciones web.
Introducción a aplicaciones web.Introducción a aplicaciones web.
Introducción a aplicaciones web.camilaml
 
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 BootDomingo Suarez Torres
 
Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con RESTAlex Puig
 
Cliente Servidor
Cliente ServidorCliente Servidor
Cliente ServidorJimmy Campo
 
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)Luis Fernando Aguas Bucheli
 
API REST conceptos (Rails-api)
API REST conceptos (Rails-api)API REST conceptos (Rails-api)
API REST conceptos (Rails-api)Daryl Moreno
 
105.desarrollo rest-con-rails
105.desarrollo rest-con-rails105.desarrollo rest-con-rails
105.desarrollo rest-con-railsERWIN AGUILAR
 
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 webinarsOpenWebinars.net
 
ingenieria web.pptx
ingenieria web.pptxingenieria web.pptx
ingenieria web.pptxmedina2966
 
Rest vswebservices
Rest vswebservicesRest vswebservices
Rest vswebservicesmahumadas
 

Similaire à 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