SlideShare a Scribd company logo
1 of 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

More Related Content

What's hot (20)

2 2 estilos arquitectonicos
2 2 estilos arquitectonicos2 2 estilos arquitectonicos
2 2 estilos arquitectonicos
 
REST API Design & Development
REST API Design & DevelopmentREST API Design & Development
REST API Design & Development
 
ASP.NET Core MVC + Web API with Overview
ASP.NET Core MVC + Web API with OverviewASP.NET Core MVC + Web API with Overview
ASP.NET Core MVC + Web API with Overview
 
React, Flux y React native
React, Flux y React nativeReact, Flux y React native
React, Flux y React native
 
Principios diseño del software
Principios diseño del software Principios diseño del software
Principios diseño del software
 
Modelo 4+1
Modelo 4+1Modelo 4+1
Modelo 4+1
 
Evaluacion de arquitecturas
Evaluacion de arquitecturasEvaluacion de arquitecturas
Evaluacion de arquitecturas
 
Servicios web
Servicios webServicios web
Servicios web
 
MVC
MVCMVC
MVC
 
Arquitecturas de software - Parte 2
Arquitecturas de software - Parte 2Arquitecturas de software - Parte 2
Arquitecturas de software - Parte 2
 
REST & RESTful Web Services
REST & RESTful Web ServicesREST & RESTful Web Services
REST & RESTful Web Services
 
modelo vista controlador
modelo vista controladormodelo vista controlador
modelo vista controlador
 
Understanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple StepsUnderstanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple Steps
 
Apache CouchDB
Apache CouchDBApache CouchDB
Apache CouchDB
 
La Ingeniería Web
La Ingeniería WebLa Ingeniería Web
La Ingeniería Web
 
Front end y Back-end
Front end y Back-end Front end y Back-end
Front end y Back-end
 
Rest API
Rest APIRest API
Rest API
 
Modelado de Diseño y Prueba de Aplicaciones Web
Modelado de Diseño y Prueba de Aplicaciones WebModelado de Diseño y Prueba de Aplicaciones Web
Modelado de Diseño y Prueba de Aplicaciones Web
 
UWE
UWEUWE
UWE
 
ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web API
 

Viewers also liked

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
 
Building Automated REST APIs with Python
Building Automated REST APIs with PythonBuilding Automated REST APIs with Python
Building Automated REST APIs with PythonJeff Knupp
 
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
 
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
 

Viewers also liked (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
 
Building Automated REST APIs with Python
Building Automated REST APIs with PythonBuilding Automated REST APIs with Python
Building Automated REST APIs with Python
 
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?
 
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 to 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
 
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
 

Similar to 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
 
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
 
API Centric
API CentricAPI Centric
API Centric
 

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