SlideShare una empresa de Scribd logo
1 de 28
Descargar para leer sin conexión
REST API 
Compartí tu aplicación. Take a REST 
©2013 GlobalLogic Inc. CONFIDENTIAL
AGENDA 
01 Presentación 
02 ¿Qué es REST? 
03 Principios 
04 SOA / ROA 
05 Web Services 
06 Diseño REST 
07 Niveles REST 
08 REST en Java 
09 Extras 
©2013 GlobalLogic Inc. CONFIDENTIAL
CONFIDENTIAL 
01 Presentacion 
Maximiliano Britez 
@mapsi88 
maximiliano.britez@globallogic.com 
● Bostero desde la cuna .- 
● Web developer .- 
● Bartender .- 
● Estudiante de ingeniería .- 
● Demás cosas que a nadie le interesa .-
Representational State Transfer 
CONFIDENTIAL 
02 ¿Que es REST? 
● El término se originó en el año 2000, en una tesis doctoral sobre la web 
escrita por Roy Fielding, uno de los principales autores de la especificación 
del protocolo HTTP. 
● REST se refiere estrictamente a una colección de principios y técnicas para 
el diseño de arquitecturas en red. 
Estos principios resumen como los recursos 
son definidos y consumidos.
03 Principios 
Client-Server 
Clientes y servidores independientes. 
Stateless 
Comunicaciones sin estado. 
Cacheable 
Respuestas “cacheables” por parte del cliente. 
Layered System 
Existencia de capas intermedias de servidores 
para mejorar escalabilidad, rendimiento y seguridad. 
Uniform Interface 
Interfaz uniforme entre cliente y servidor, evolución 
y desarrollo independiente. 
CONFIDENTIAL
Utilizan servicios para brindar los resultados de la aplicación. 
CONFIDENTIAL 
04 SOA / ROA 
Service Oriented Architecture 
● SOAP 
● WSDL 
● UDDI
CONFIDENTIAL 
04 SOA / ROA (Cont…) 
Resource Oriented Architecture 
Basado en recursos, cada recurso es accesible por medio de una interfaz común. 
● REST
CONFIDENTIAL 
05 Web Services 
Inconvenientes 
Requieren de un contrato (WSDL) para lograr la 
comunicación 
Requieren crear un cliente específico 
Generan un gran overhead de datos 
(gran cantidad de metadata) 
Implementación compleja con aplicaciones 
orientadas a AJAX.
CONFIDENTIAL 
06 Diseño REST 
HTTP Methods 
HTTP Status Codes 
Internet Media 
Types
Los métodos HTTP suelen ser comparados con las operaciones asociadas a la tecnología de base de 
datos, operaciones CRUD. 
CONFIDENTIAL 
REST API - Compartí tu app, take a REST 
HTTP Methods 
Acción HTTP Method SQL 
Create POST INSERT 
Read GET SELECT 
Update PUT UPDATE 
Delete DELETE DELETE
CONFIDENTIAL 
REST API - Compartí tu app, take a REST 
HTTP Status Codes 
Basado en los STATUS CODES de HTTP 
Además de la representación o no, se envía por medio de los HEADERS el status 
de la respuesta. 
INFO (1XX) 
SUCCESS (2XX) 
REDIRECTION (3XX) 
CLIENT ERROR (4XX) 
SERVER ERROR (5XX)
REST API - Compartí tu app, take a REST 
HTTP Status Codes (Cont…) 
SUCCESS (2XX) 
El Request fue recibido, entendido, aceptado, procesado satisfactoriamente. 
200 OK 
Respuesta estándar para request procesados 
exitosamente. 
201 Created 
Request procesado exitosamente y creó un nuevo 
resource. 
202 Accepted 
Request aceptado, pero su proceso no está completo. 
204 No Content 
Request procesado exitosamente, pero respuesta sin 
contenido. 
CONFIDENTIAL
REST API - Compartí tu app, take a REST 
HTTP Status Codes (Cont…) 
ERROR (4XX) 
El Request fue recibido, pero hubo un error por parte del cliente. 
400 Bad Request 
Hay una mala sintaxis en el request. 
401 Unauthorized 
No estamos autorizados para acceder al recurso 
(autenticación es requerida en estos casos). 
403 Forbidden 
No contamos con permisos para acceder al recurso. En este caso 
autenticarse no hará diferencia. 
404 Not Found 
El recurso solicitado no existe. 
405 Method Not Allowed 
El cliente no puede realizar la acción solicitada sobre el recurso. 
CONFIDENTIAL
REST API - Compartí tu app, take a REST 
HTTP Status Codes (Cont…) 
SERVER ERROR (5XX) 
El Request es válido, pero el servidor es incapaz de resolver la petición. 
500 Internal Server Error 
Es un mensaje genérico a algún error 
inesperado. 
501 Not Implemented 
El método no es reconocido por la API. 
503 Service Unavailable 
Servidor sobrecargado, o esta apagado por 
mantenimiento. 
CONFIDENTIAL
CONFIDENTIAL 
06 Internet Media Types 
El intercambio de datos se realiza a través de Internet Media Types o 
Content-types. 
● Es un identificador de dos partes el cual indica el tipo de contenido que viajará en el BODY. 
● Este se encuentra definido en el HEADER: 
● Request: Accept y Content-type 
● Response: Content-type 
Ejemplos: 
● application/json 
● application/xml 
● image/jpeg 
● text/plain 
● video/mpeg 
● video/mp4
06 Internet Media Types (Cont …) 
● Sirven como contratos, para que el cliente sepa que es lo que necesita 
enviar y que es lo que el resource esta esperando. 
● Al describir que esperamos applicacion/xml o application/json. No 
sabemos realmente a que hacemos referencia, si a una orden, si a un 
drink, o lo que sea que necesite. 
● Al usar application/vnd.starbucks.com.drink+xml o application/vnd. 
starbucks.com.drink+json, identificamos como debe ser el Content- 
Type del request. 
CONFIDENTIAL 
Custom Media Types
1. “The Swamp of POX.” 
2. Resources 
3. HTTP Verbs 
4. Hypermedia Controls (HATEOAS) 
CONFIDENTIAL 
07 Niveles REST 
RESTFUL 100% COMPLIANT
REST API - Compartí tu app, take a REST 
Niveles REST 
1 - SWAMP OF POX 
Utilizamos HTTP como protocolo de comunicación. 
http://starbucks.com/createDrink 
http://starbucks.com/updateDrink?drinkId=34 
http://starbucks.com/deleteDrink?drinkId=34 
http://starbucks.com/getDrink?drinkId=34 
http://starbucks.com/listDrinks 
CONFIDENTIAL
REST API - Compartí tu app, take a REST 
Niveles REST 
2 - Resources 
Orientamos el diseño a recursos en vez de acciones 
http://starbucks.com/drinks/create 
http://starbucks.com/drinks/update?drinkId=34 
http://starbucks.com/drinks/delete?drinkId=34 
http://starbucks.com/drinks/get?drinkId=34 
http://starbucks.com/drinks/list 
CONFIDENTIAL
CONFIDENTIAL 
REST API - Compartí tu app, take a REST 
Niveles REST 
3 - HTTP Verbs 
Basta del POST para todos! 
http://starbucks.com/drinks [POST] 
http://starbucks.com/drinks/34 [PUT] 
http://starbucks.com/drinks/34 [DELETE] 
http://starbucks.com/drinks/34 [GET] 
http://starbucks.com/drinks [GET]
REST API - Compartí tu app, take a REST 
Niveles REST 
4 - Hypermedia Links 
Utilizamos el principio de HATEOAS (Hypertext As The Engine Of Application State) y la aplicación de 
media types... 
Response Header: 
Content-type: application/vmd.starbucks.com.drink+xml 
Response Body: 
<Drink> 
CONFIDENTIAL 
<id>5</id> 
<key>Caffe Latte</key 
<price>5.48</price> 
<link rel="self" uri="http://starbucks.com/drinks/5" /> 
<link rel="order" uri="http://starbucks.com/orders" 
method="POST" 
type="application/vnd.starbucks.order+xml/> 
</Drink>
CONFIDENTIAL 
REST API - Compartí tu app, take a REST 
Niveles REST 
Si cumplimos estos niveles... 
RESTFUL 100% COMPLIANT
● Cliente solo debe conocer: 
● root URI de la API 
● definición de los media types 
CONFIDENTIAL 
REST API - Compartí tu app, take a REST 
Niveles REST 
Conclusiones 
El resto solo es HTTP y links...
CONFIDENTIAL 
08 REST en JAVA 
Frameworks 
● JAX-RS (JSR 311) 
○ Resteasy (http://wiki.jboss.org/wiki/RESTeasy) 
○ Jersey (http://jersey.java.net/) 
○ Apache CXF (http://cxf.apache.org/) 
● RESTlet 
http://www.restlet.org 
● SPRING MVC 3 
http://www.springsource.org/spring-framework
SEGURIDAD 
CONFIDENTIAL 
09 Extras 
HTTPS 
Basic Authentication 
OAuth2
¿Preguntas? 
CONFIDENTIAL
©2013 GlobalLogic Inc. CONFIDENTIAL
Thank You 
©2013 GlobalLogic Inc. CONFIDENTIAL

Más contenido relacionado

La actualidad más candente

REST, JERSEY & SOAP
REST, JERSEY & SOAPREST, JERSEY & SOAP
REST, JERSEY & SOAP
ea2014G3
 
144 Rest Web Services
144 Rest Web Services144 Rest Web Services
144 Rest Web Services
GeneXus
 
Presentación html5
Presentación html5Presentación html5
Presentación html5
aydimdagam
 

La actualidad más candente (20)

Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con REST
 
REST, JERSEY & SOAP
REST, JERSEY & SOAPREST, JERSEY & SOAP
REST, JERSEY & SOAP
 
Arquitectura Rest
Arquitectura RestArquitectura Rest
Arquitectura Rest
 
API REST conceptos (Rails-api)
API REST conceptos (Rails-api)API REST conceptos (Rails-api)
API REST conceptos (Rails-api)
 
Tutorial - REST con java (JAX-RS 2.0)
Tutorial - REST con java (JAX-RS 2.0)Tutorial - REST con java (JAX-RS 2.0)
Tutorial - REST con java (JAX-RS 2.0)
 
Servicios web
Servicios webServicios web
Servicios web
 
RESTful Para todos by Diego Sapriza
RESTful Para todos by Diego SaprizaRESTful Para todos by Diego Sapriza
RESTful Para todos by Diego Sapriza
 
Rest Conf Rails
Rest Conf RailsRest Conf Rails
Rest Conf Rails
 
144 Rest Web Services
144 Rest Web Services144 Rest Web Services
144 Rest Web Services
 
Taller 3 conexion
Taller 3 conexionTaller 3 conexion
Taller 3 conexion
 
APIs REST #devfestBilbao
APIs REST #devfestBilbaoAPIs REST #devfestBilbao
APIs REST #devfestBilbao
 
Desafiando las transformaciones con WSO2 ESB
Desafiando las transformaciones con WSO2 ESBDesafiando las transformaciones con WSO2 ESB
Desafiando las transformaciones con WSO2 ESB
 
SimpleSAMLphp
SimpleSAMLphpSimpleSAMLphp
SimpleSAMLphp
 
Presentación html5
Presentación html5Presentación html5
Presentación html5
 
Consumo de APIs usando el WSO2 API Manager
Consumo de APIs usando el WSO2 API ManagerConsumo de APIs usando el WSO2 API Manager
Consumo de APIs usando el WSO2 API Manager
 
Java Web Services - REST
Java Web Services - RESTJava Web Services - REST
Java Web Services - REST
 
Intro a ASP.NET
Intro a ASP.NETIntro a ASP.NET
Intro a ASP.NET
 
Creacion Apirest Back{4}app
Creacion Apirest Back{4}appCreacion Apirest Back{4}app
Creacion Apirest Back{4}app
 
Desarrollo web con_asp.net 2.1
Desarrollo web con_asp.net 2.1Desarrollo web con_asp.net 2.1
Desarrollo web con_asp.net 2.1
 
Jose Rojas Desarrollo Rapido de Aplicaciones con RoR
Jose Rojas Desarrollo Rapido de Aplicaciones con RoRJose Rojas Desarrollo Rapido de Aplicaciones con RoR
Jose Rojas Desarrollo Rapido de Aplicaciones con RoR
 

Similar a Charla REST API

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

Similar a Charla REST API (20)

API REST FOR THE BD2 DATABASE WITHIN THE IBM I SYSTEMS, USING THE PHP FRAMEWO...
API REST FOR THE BD2 DATABASE WITHIN THE IBM I SYSTEMS, USING THE PHP FRAMEWO...API REST FOR THE BD2 DATABASE WITHIN THE IBM I SYSTEMS, USING THE PHP FRAMEWO...
API REST FOR THE BD2 DATABASE WITHIN THE IBM I SYSTEMS, USING THE PHP FRAMEWO...
 
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
 
Semana 7 Servicios Web REST con MongoDB final
Semana 7   Servicios Web REST con MongoDB finalSemana 7   Servicios Web REST con MongoDB final
Semana 7 Servicios Web REST con MongoDB final
 
Desarrolla tu primera api con spring boot
Desarrolla tu primera api con spring bootDesarrolla tu primera api con spring boot
Desarrolla tu primera api con spring boot
 
REST - deSymfony2012
REST - deSymfony2012REST - deSymfony2012
REST - deSymfony2012
 
"Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore""Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore"
 
Desarrollo web
Desarrollo webDesarrollo web
Desarrollo web
 
Presentac[2]..
Presentac[2]..Presentac[2]..
Presentac[2]..
 
API como SaaS
API como SaaSAPI como SaaS
API como SaaS
 
Arquitectura de una Apis Rest en C.pptx
Arquitectura de una Apis  Rest en C.pptxArquitectura de una Apis  Rest en C.pptx
Arquitectura de una Apis Rest en C.pptx
 
S7-DAW-2022S1.pptx
S7-DAW-2022S1.pptxS7-DAW-2022S1.pptx
S7-DAW-2022S1.pptx
 
Developers love APIs
Developers love APIsDevelopers love APIs
Developers love APIs
 
Conocimientos de aplicaciones web
Conocimientos de aplicaciones webConocimientos de aplicaciones web
Conocimientos de aplicaciones web
 
Estrategias de desarrollo en sharepoint
Estrategias de desarrollo en sharepointEstrategias de desarrollo en sharepoint
Estrategias de desarrollo en sharepoint
 
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...
 
Novedades en Desarrollo en SharePoint 2013
Novedades en Desarrollo en SharePoint 2013Novedades en Desarrollo en SharePoint 2013
Novedades en Desarrollo en SharePoint 2013
 
WSO2 API Manager y ESB la plataforma perfecta para evolucionar los servicios
WSO2 API Manager y ESB la plataforma perfecta para evolucionar los serviciosWSO2 API Manager y ESB la plataforma perfecta para evolucionar los servicios
WSO2 API Manager y ESB la plataforma perfecta para evolucionar los servicios
 
Introducción a aplicaciones web.
Introducción a aplicaciones web.Introducción a aplicaciones web.
Introducción a aplicaciones web.
 
API WEB SQL ITParral
API WEB SQL ITParralAPI WEB SQL ITParral
API WEB SQL ITParral
 
Curs 2.8. Utilización Automatizada de Datos Publicos (1)
Curs 2.8. Utilización Automatizada de Datos Publicos (1)Curs 2.8. Utilización Automatizada de Datos Publicos (1)
Curs 2.8. Utilización Automatizada de Datos Publicos (1)
 

Más de GlobalLogic Latinoamérica

Más de GlobalLogic Latinoamérica (14)

5º MeetUP ARQconf 2016 - IoT: What is it really and how does it work?
5º MeetUP ARQconf 2016 - IoT: What is it really and how does it work?5º MeetUP ARQconf 2016 - IoT: What is it really and how does it work?
5º MeetUP ARQconf 2016 - IoT: What is it really and how does it work?
 
Chuck norris navigates offline - meetup ui lp 2015
Chuck norris navigates offline - meetup ui lp 2015Chuck norris navigates offline - meetup ui lp 2015
Chuck norris navigates offline - meetup ui lp 2015
 
[Bpm practice] focos práctica bpm
[Bpm practice] focos práctica bpm[Bpm practice] focos práctica bpm
[Bpm practice] focos práctica bpm
 
[Bpm practice] breve introduccion a bpm
[Bpm practice] breve introduccion a bpm [Bpm practice] breve introduccion a bpm
[Bpm practice] breve introduccion a bpm
 
Gl club story mapping - impact mapping - 30-09-2015
Gl club   story mapping - impact mapping - 30-09-2015Gl club   story mapping - impact mapping - 30-09-2015
Gl club story mapping - impact mapping - 30-09-2015
 
[Bpm practice] breve introduccion a bpm(1)
[Bpm practice] breve introduccion a bpm(1)[Bpm practice] breve introduccion a bpm(1)
[Bpm practice] breve introduccion a bpm(1)
 
My first app Android
My first app AndroidMy first app Android
My first app Android
 
Architectural katas - La Plata - 23-07-2015
Architectural katas - La Plata - 23-07-2015Architectural katas - La Plata - 23-07-2015
Architectural katas - La Plata - 23-07-2015
 
Presentación Java Evolution - GlobalLogic Club
Presentación Java Evolution - GlobalLogic ClubPresentación Java Evolution - GlobalLogic Club
Presentación Java Evolution - GlobalLogic Club
 
Workshop Product in a Box
Workshop Product in a BoxWorkshop Product in a Box
Workshop Product in a Box
 
Camino hacia la calidad superlativa - Marcelo Corpucci
Camino hacia la calidad superlativa - Marcelo CorpucciCamino hacia la calidad superlativa - Marcelo Corpucci
Camino hacia la calidad superlativa - Marcelo Corpucci
 
Seminario Android inicial 2014
Seminario Android inicial 2014Seminario Android inicial 2014
Seminario Android inicial 2014
 
Calidad en Agile - EducacionIT
Calidad en Agile - EducacionITCalidad en Agile - EducacionIT
Calidad en Agile - EducacionIT
 
La experiencia de usuario desde la mirada de Method
La experiencia de usuario desde la mirada de MethodLa experiencia de usuario desde la mirada de Method
La experiencia de usuario desde la mirada de Method
 

Charla REST API

  • 1. REST API Compartí tu aplicación. Take a REST ©2013 GlobalLogic Inc. CONFIDENTIAL
  • 2. AGENDA 01 Presentación 02 ¿Qué es REST? 03 Principios 04 SOA / ROA 05 Web Services 06 Diseño REST 07 Niveles REST 08 REST en Java 09 Extras ©2013 GlobalLogic Inc. CONFIDENTIAL
  • 3. CONFIDENTIAL 01 Presentacion Maximiliano Britez @mapsi88 maximiliano.britez@globallogic.com ● Bostero desde la cuna .- ● Web developer .- ● Bartender .- ● Estudiante de ingeniería .- ● Demás cosas que a nadie le interesa .-
  • 4. Representational State Transfer CONFIDENTIAL 02 ¿Que es REST? ● El término se originó en el año 2000, en una tesis doctoral sobre la web escrita por Roy Fielding, uno de los principales autores de la especificación del protocolo HTTP. ● REST se refiere estrictamente a una colección de principios y técnicas para el diseño de arquitecturas en red. Estos principios resumen como los recursos son definidos y consumidos.
  • 5. 03 Principios Client-Server Clientes y servidores independientes. Stateless Comunicaciones sin estado. Cacheable Respuestas “cacheables” por parte del cliente. Layered System Existencia de capas intermedias de servidores para mejorar escalabilidad, rendimiento y seguridad. Uniform Interface Interfaz uniforme entre cliente y servidor, evolución y desarrollo independiente. CONFIDENTIAL
  • 6. Utilizan servicios para brindar los resultados de la aplicación. CONFIDENTIAL 04 SOA / ROA Service Oriented Architecture ● SOAP ● WSDL ● UDDI
  • 7. CONFIDENTIAL 04 SOA / ROA (Cont…) Resource Oriented Architecture Basado en recursos, cada recurso es accesible por medio de una interfaz común. ● REST
  • 8. CONFIDENTIAL 05 Web Services Inconvenientes Requieren de un contrato (WSDL) para lograr la comunicación Requieren crear un cliente específico Generan un gran overhead de datos (gran cantidad de metadata) Implementación compleja con aplicaciones orientadas a AJAX.
  • 9. CONFIDENTIAL 06 Diseño REST HTTP Methods HTTP Status Codes Internet Media Types
  • 10. Los métodos HTTP suelen ser comparados con las operaciones asociadas a la tecnología de base de datos, operaciones CRUD. CONFIDENTIAL REST API - Compartí tu app, take a REST HTTP Methods Acción HTTP Method SQL Create POST INSERT Read GET SELECT Update PUT UPDATE Delete DELETE DELETE
  • 11. CONFIDENTIAL REST API - Compartí tu app, take a REST HTTP Status Codes Basado en los STATUS CODES de HTTP Además de la representación o no, se envía por medio de los HEADERS el status de la respuesta. INFO (1XX) SUCCESS (2XX) REDIRECTION (3XX) CLIENT ERROR (4XX) SERVER ERROR (5XX)
  • 12. REST API - Compartí tu app, take a REST HTTP Status Codes (Cont…) SUCCESS (2XX) El Request fue recibido, entendido, aceptado, procesado satisfactoriamente. 200 OK Respuesta estándar para request procesados exitosamente. 201 Created Request procesado exitosamente y creó un nuevo resource. 202 Accepted Request aceptado, pero su proceso no está completo. 204 No Content Request procesado exitosamente, pero respuesta sin contenido. CONFIDENTIAL
  • 13. REST API - Compartí tu app, take a REST HTTP Status Codes (Cont…) ERROR (4XX) El Request fue recibido, pero hubo un error por parte del cliente. 400 Bad Request Hay una mala sintaxis en el request. 401 Unauthorized No estamos autorizados para acceder al recurso (autenticación es requerida en estos casos). 403 Forbidden No contamos con permisos para acceder al recurso. En este caso autenticarse no hará diferencia. 404 Not Found El recurso solicitado no existe. 405 Method Not Allowed El cliente no puede realizar la acción solicitada sobre el recurso. CONFIDENTIAL
  • 14. REST API - Compartí tu app, take a REST HTTP Status Codes (Cont…) SERVER ERROR (5XX) El Request es válido, pero el servidor es incapaz de resolver la petición. 500 Internal Server Error Es un mensaje genérico a algún error inesperado. 501 Not Implemented El método no es reconocido por la API. 503 Service Unavailable Servidor sobrecargado, o esta apagado por mantenimiento. CONFIDENTIAL
  • 15. CONFIDENTIAL 06 Internet Media Types El intercambio de datos se realiza a través de Internet Media Types o Content-types. ● Es un identificador de dos partes el cual indica el tipo de contenido que viajará en el BODY. ● Este se encuentra definido en el HEADER: ● Request: Accept y Content-type ● Response: Content-type Ejemplos: ● application/json ● application/xml ● image/jpeg ● text/plain ● video/mpeg ● video/mp4
  • 16. 06 Internet Media Types (Cont …) ● Sirven como contratos, para que el cliente sepa que es lo que necesita enviar y que es lo que el resource esta esperando. ● Al describir que esperamos applicacion/xml o application/json. No sabemos realmente a que hacemos referencia, si a una orden, si a un drink, o lo que sea que necesite. ● Al usar application/vnd.starbucks.com.drink+xml o application/vnd. starbucks.com.drink+json, identificamos como debe ser el Content- Type del request. CONFIDENTIAL Custom Media Types
  • 17. 1. “The Swamp of POX.” 2. Resources 3. HTTP Verbs 4. Hypermedia Controls (HATEOAS) CONFIDENTIAL 07 Niveles REST RESTFUL 100% COMPLIANT
  • 18. REST API - Compartí tu app, take a REST Niveles REST 1 - SWAMP OF POX Utilizamos HTTP como protocolo de comunicación. http://starbucks.com/createDrink http://starbucks.com/updateDrink?drinkId=34 http://starbucks.com/deleteDrink?drinkId=34 http://starbucks.com/getDrink?drinkId=34 http://starbucks.com/listDrinks CONFIDENTIAL
  • 19. REST API - Compartí tu app, take a REST Niveles REST 2 - Resources Orientamos el diseño a recursos en vez de acciones http://starbucks.com/drinks/create http://starbucks.com/drinks/update?drinkId=34 http://starbucks.com/drinks/delete?drinkId=34 http://starbucks.com/drinks/get?drinkId=34 http://starbucks.com/drinks/list CONFIDENTIAL
  • 20. CONFIDENTIAL REST API - Compartí tu app, take a REST Niveles REST 3 - HTTP Verbs Basta del POST para todos! http://starbucks.com/drinks [POST] http://starbucks.com/drinks/34 [PUT] http://starbucks.com/drinks/34 [DELETE] http://starbucks.com/drinks/34 [GET] http://starbucks.com/drinks [GET]
  • 21. REST API - Compartí tu app, take a REST Niveles REST 4 - Hypermedia Links Utilizamos el principio de HATEOAS (Hypertext As The Engine Of Application State) y la aplicación de media types... Response Header: Content-type: application/vmd.starbucks.com.drink+xml Response Body: <Drink> CONFIDENTIAL <id>5</id> <key>Caffe Latte</key <price>5.48</price> <link rel="self" uri="http://starbucks.com/drinks/5" /> <link rel="order" uri="http://starbucks.com/orders" method="POST" type="application/vnd.starbucks.order+xml/> </Drink>
  • 22. CONFIDENTIAL REST API - Compartí tu app, take a REST Niveles REST Si cumplimos estos niveles... RESTFUL 100% COMPLIANT
  • 23. ● Cliente solo debe conocer: ● root URI de la API ● definición de los media types CONFIDENTIAL REST API - Compartí tu app, take a REST Niveles REST Conclusiones El resto solo es HTTP y links...
  • 24. CONFIDENTIAL 08 REST en JAVA Frameworks ● JAX-RS (JSR 311) ○ Resteasy (http://wiki.jboss.org/wiki/RESTeasy) ○ Jersey (http://jersey.java.net/) ○ Apache CXF (http://cxf.apache.org/) ● RESTlet http://www.restlet.org ● SPRING MVC 3 http://www.springsource.org/spring-framework
  • 25. SEGURIDAD CONFIDENTIAL 09 Extras HTTPS Basic Authentication OAuth2
  • 27. ©2013 GlobalLogic Inc. CONFIDENTIAL
  • 28. Thank You ©2013 GlobalLogic Inc. CONFIDENTIAL