SlideShare une entreprise Scribd logo
1  sur  15
Java Web Services
REST
Email de consultas: luisdebello.cursos@gmail.com
¿Que es REST?
REpresentational State Transfer
Define un estilo de arquitectura para desarrollar aplicaciones web
distribuidas que se basa en el uso del protocolo HTTP e Hypermedia.
Principios:
 Stateless (No mantiene estado)
 Exponer URIs (Uniform Resource Identifier) con forma de directorios
 Uso de verbos HTTP
 Recursos
Java Web Services
Stateless (No mantiene estado)
Java Web Services
URIs (Uniform Resource Identifier)
Java Web Services
 URL: Uniform Resource Locator, o Localizador Uniforme de Recursos.
Son unas cadenas de texto que se usan para nombrar recursos en Internet
para su localización.
Ejemplo:
http://es.wikipedia.org:80/wiki/Special:Search?search=tren&go=Go
 URN: Uniform Resource Name, o Nombre Uniforme de Recursos. Son
unas cadenas de texto que se usan para nombrar recursos en Internet para
su identificación.
Ejemplo: urn:isbn:0451450523
 URI: Uniform Resource Identifier, o Identificador Uniforme de Recursos.
Exponer URI
Java Web Services
Las URIs deben ser intuitivas, hasta el punto de que sea fácil adivinarlas.
Pensemos en las URI como una interfaz auto-documentada que necesita
de muy poca o ninguna explicación o referencia para que un desarrollador
pueda comprender a lo que apunta, y a los recursos derivados
relacionados.
La raiz, /discusion, tiene un nodo /temas como hijo. Bajo este nodo hay un
conjunto de nombres de temas (como ser tecnología, actualidad, y más),
cada uno de los cuales apunta a un hilo de discusión. Dentro de esta
estructura, resulta fácil recuperar hilos de discusión al escribir algo
después de /temas/.
Verbos HTTP
Java Web Services
Request: GET/users
Response: 200 content-type: application/json
Request: GET/users/11
Response: 200 content-type: application/json
Request: POST/users
Response: 201 content-type:application/json
Request: PUT/11
Response: 200 content-type: application/json
Request : DELETE/11
Response: 204 no content
Recursos
Java Web Services
Algunos códigos típicos mas su descripción
 OK(200, "OK")
 CREATED(201, "Created")
 ACCEPTED(202, "Accepted")
 NO_CONTENT(204, "No Content")
 NOT_MODIFIED(304, "Not Modified"),
 NOT_FOUND(404, "Not Found")
 NOT_ACCEPTABLE(406, "Not Acceptable")
/users: Listado de usuarios
/users/{id}: Muestra un usuario
Múltiples representaciones
Java Web Services
 Content-Type: Nos dice que tipo de representación tiene los datos que
enviamos
 Accept: Le decimos la representación del dato esperado y luego a
esperar.
HTTPs Headers
Java Web Services
 Content-Type: Nos dice que tipo de representación tiene los datos que
enviamos.
 Accept: Le decimos la representación del dato esperado y luego a
esperar.
 ETag: Podemos controlar si el recurso ha sido modificado desde la ultima
vez que accedimos con un hash.
 If-None-Match: Se usa para validar su valor contra el Etag para ver si es
distinto y actualizarlo, If-Match hace lo inverno. Si no hay cambios el
servidor puede devolver una respuesta con estado HTTP 304 Not
Modified.
 Last-Modified/If-Modified-Since: Permite saber si el recurso se
modificado en base a la fecha del sistema
HATEOAS (Soportado por JAX-RS 2.0)
Java Web Services
HATEOAS (Hypermedia as the Engine of Application State), Es una
restricción de la arquitectura de la aplicación REST que lo distingue de la
mayoría de otras arquitecturas. El principio es que un cliente interactúa con
una aplicación de red completamente a través de hipermedia
proporcionadas dinámicamente por los servidores de aplicaciones. Es
como que el cliente REST debe ir navegando por la información y no
necesita ningún conocimiento previo acerca de la forma de interactuar con
cualquier aplicación o servidor más allá de una comprensión genérica de
hipermedia.
La restricción HATEOAS desacopla cliente y el servidor de una manera
que permite la funcionalidad del servidor para evolucionar de forma
independiente.
REST vs RESTful
Java Web Services
Dependiendo si cumplimos todos los niveles podemos decir que nuestra API
es RESTful. El RMM (Richardson Maturity Model) define 4 niveles [0-3],
donde cumplir con el nivel 3 es ser RESTful.
Level 0: Swamp of POX(Plain old XML)
Java Web Services
 La comunicación es sobre HTTP a un End Point. El cliente se comunica
tanto de ida como de vuelta al mismo End Point utilizando un verbo HTTP
(Ejemplo POST).
 Para cada request/mensaje (XML por ejemplo), el server retorna un
response/mensaje (XML por ejemplo).
 Ejemplos de este nivel son SOAP y XML-RPC.
Level 1: Resources
Java Web Services
 La comunicación es con recursos, el cliente se comunica usando HTTP
pero a diferentes recursos.
 Cada recursos es alcanzable por medio de su URI.
 En lugar de acceder a "http://educacionit.com.ar/articulos", podemos
acceder a "http://educacionit.com.ar/articulos/1" o
"http://educacionit.com.ar/articulos/2", igualmente en este nivel seguimos
usando un único verbo.
Level 2: HTTP Verbs
Java Web Services
 Este nivel se basa en utilizar cada verbo HTTP para un propósito
específicos.
 Además debemos focalizarnos en el response para que maneje los
response code de manera correcta.
Level 3 - Hypermedia Controls
Java Web Services
 La comunicación es con recursos usando los verbos HTTP y manejando
distintas representaciones de nuestros recursos.
 En este nivel nuestra API puede tener URIs dinámicas que no afectan al
cliente ya que deben ser retornadas en el response generado.

Contenu connexe

Tendances (20)

8/9 Curso JEE5, Soa, Web Services, ESB y XML
8/9 Curso JEE5, Soa, Web Services, ESB y XML8/9 Curso JEE5, Soa, Web Services, ESB y XML
8/9 Curso JEE5, Soa, Web Services, ESB y XML
 
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)
 
Charla Web Services
Charla Web ServicesCharla Web Services
Charla Web Services
 
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
 
JEE y Tomcat
JEE y TomcatJEE y Tomcat
JEE y Tomcat
 
SOAP y Web Services
SOAP y Web ServicesSOAP y Web Services
SOAP y Web Services
 
JDBC
JDBCJDBC
JDBC
 
Rest Conf Rails
Rest Conf RailsRest Conf Rails
Rest Conf Rails
 
Introducción a REST - SymfonyVLC
Introducción a REST - SymfonyVLCIntroducción a REST - SymfonyVLC
Introducción a REST - SymfonyVLC
 
SOA y Web Services
SOA y Web ServicesSOA y Web Services
SOA y Web Services
 
1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XML1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XML
 
Desarrollo y consumo de web services
Desarrollo y consumo de web servicesDesarrollo y consumo de web services
Desarrollo y consumo de web services
 
Paper ieee
Paper ieeePaper ieee
Paper ieee
 
WCF for Dummies (Parte II)
WCF for Dummies (Parte II)WCF for Dummies (Parte II)
WCF for Dummies (Parte II)
 
Simplemente REST
Simplemente RESTSimplemente REST
Simplemente REST
 
Soap eduardo cano
Soap  eduardo canoSoap  eduardo cano
Soap eduardo cano
 
Creando endpoint http
Creando endpoint httpCreando endpoint http
Creando endpoint http
 
Introducción a java EE 7
Introducción a java EE 7Introducción a java EE 7
Introducción a java EE 7
 
Jdbc
JdbcJdbc
Jdbc
 
Rest
RestRest
Rest
 

Similaire à Java Web Services - REST

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
 
Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con RESTAlex Puig
 
Aplicaciones web
Aplicaciones webAplicaciones web
Aplicaciones webFelipe
 
Arquitectura-orientada-a-Servicios.-v-2017.01-Prof.-L.-Straccia.pptx
Arquitectura-orientada-a-Servicios.-v-2017.01-Prof.-L.-Straccia.pptxArquitectura-orientada-a-Servicios.-v-2017.01-Prof.-L.-Straccia.pptx
Arquitectura-orientada-a-Servicios.-v-2017.01-Prof.-L.-Straccia.pptxXavierNavia
 
RES - Transferencia de Estado Representacional
RES - Transferencia de Estado RepresentacionalRES - Transferencia de Estado Representacional
RES - Transferencia de Estado RepresentacionalRobert Caraguay
 
API REST conceptos (Rails-api)
API REST conceptos (Rails-api)API REST conceptos (Rails-api)
API REST conceptos (Rails-api)Daryl Moreno
 
Java WebServices JaxWS - JaxRs
Java WebServices JaxWS - JaxRsJava WebServices JaxWS - JaxRs
Java WebServices JaxWS - JaxRsHernan Rengifo
 

Similaire à Java Web Services - REST (20)

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
 
Presentacion ws
Presentacion wsPresentacion ws
Presentacion ws
 
Servicios web
Servicios webServicios web
Servicios web
 
Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con REST
 
REST - deSymfony2012
REST - deSymfony2012REST - deSymfony2012
REST - deSymfony2012
 
Aplicaciones web
Aplicaciones webAplicaciones web
Aplicaciones web
 
T final modulo_1
T final modulo_1T final modulo_1
T final modulo_1
 
Arquitectura-orientada-a-Servicios.-v-2017.01-Prof.-L.-Straccia.pptx
Arquitectura-orientada-a-Servicios.-v-2017.01-Prof.-L.-Straccia.pptxArquitectura-orientada-a-Servicios.-v-2017.01-Prof.-L.-Straccia.pptx
Arquitectura-orientada-a-Servicios.-v-2017.01-Prof.-L.-Straccia.pptx
 
introduccion a Ajax
introduccion a Ajaxintroduccion a Ajax
introduccion a Ajax
 
Java Web - Introduccion
Java Web - IntroduccionJava Web - Introduccion
Java Web - Introduccion
 
Servicios web
Servicios webServicios web
Servicios web
 
RES - Transferencia de Estado Representacional
RES - Transferencia de Estado RepresentacionalRES - Transferencia de Estado Representacional
RES - Transferencia de Estado Representacional
 
API REST conceptos (Rails-api)
API REST conceptos (Rails-api)API REST conceptos (Rails-api)
API REST conceptos (Rails-api)
 
Java WebServices JaxWS - JaxRs
Java WebServices JaxWS - JaxRsJava WebServices JaxWS - JaxRs
Java WebServices JaxWS - JaxRs
 
Servicios Web
Servicios WebServicios Web
Servicios Web
 
REST
RESTREST
REST
 
SOA y Web Services
SOA y Web ServicesSOA y Web Services
SOA y Web Services
 
02 - Servicios SOAP.pptx
02 - Servicios SOAP.pptx02 - Servicios SOAP.pptx
02 - Servicios SOAP.pptx
 
Desarrollo web
Desarrollo webDesarrollo web
Desarrollo web
 
Webservices
WebservicesWebservices
Webservices
 

Plus de Luis Miguel De Bello (18)

Java Web Services - SOAP Temas Adicionales
Java Web Services - SOAP Temas AdicionalesJava Web Services - SOAP Temas Adicionales
Java Web Services - SOAP Temas Adicionales
 
Java Web Services - SOAP Binding
Java Web Services - SOAP BindingJava Web Services - SOAP Binding
Java Web Services - SOAP Binding
 
Java Web - JSF
Java Web - JSFJava Web - JSF
Java Web - JSF
 
Java Web - Struts
Java Web - StrutsJava Web - Struts
Java Web - Struts
 
Java Web - JSP
Java Web - JSPJava Web - JSP
Java Web - JSP
 
Java Web - Servlet
Java Web - ServletJava Web - Servlet
Java Web - Servlet
 
Base de datos - Clase 2
Base de datos - Clase 2Base de datos - Clase 2
Base de datos - Clase 2
 
Base de datos - Clase 3
Base de datos - Clase 3Base de datos - Clase 3
Base de datos - Clase 3
 
Base de datos - Clase 1
Base de datos - Clase 1Base de datos - Clase 1
Base de datos - Clase 1
 
Base de datos - Clase 4
Base de datos - Clase 4Base de datos - Clase 4
Base de datos - Clase 4
 
Java Web - Session
Java Web - SessionJava Web - Session
Java Web - Session
 
Sockets TCP
Sockets TCPSockets TCP
Sockets TCP
 
Sockets UDP
Sockets UDPSockets UDP
Sockets UDP
 
Thread 02
Thread 02Thread 02
Thread 02
 
Thread 01
Thread 01Thread 01
Thread 01
 
Log4J
Log4JLog4J
Log4J
 
Administración de memoria en java
Administración de memoria en javaAdministración de memoria en java
Administración de memoria en java
 
Best Practices
Best PracticesBest Practices
Best Practices
 

Java Web Services - REST

  • 1. Java Web Services REST Email de consultas: luisdebello.cursos@gmail.com
  • 2. ¿Que es REST? REpresentational State Transfer Define un estilo de arquitectura para desarrollar aplicaciones web distribuidas que se basa en el uso del protocolo HTTP e Hypermedia. Principios:  Stateless (No mantiene estado)  Exponer URIs (Uniform Resource Identifier) con forma de directorios  Uso de verbos HTTP  Recursos Java Web Services
  • 3. Stateless (No mantiene estado) Java Web Services
  • 4. URIs (Uniform Resource Identifier) Java Web Services  URL: Uniform Resource Locator, o Localizador Uniforme de Recursos. Son unas cadenas de texto que se usan para nombrar recursos en Internet para su localización. Ejemplo: http://es.wikipedia.org:80/wiki/Special:Search?search=tren&go=Go  URN: Uniform Resource Name, o Nombre Uniforme de Recursos. Son unas cadenas de texto que se usan para nombrar recursos en Internet para su identificación. Ejemplo: urn:isbn:0451450523  URI: Uniform Resource Identifier, o Identificador Uniforme de Recursos.
  • 5. Exponer URI Java Web Services Las URIs deben ser intuitivas, hasta el punto de que sea fácil adivinarlas. Pensemos en las URI como una interfaz auto-documentada que necesita de muy poca o ninguna explicación o referencia para que un desarrollador pueda comprender a lo que apunta, y a los recursos derivados relacionados. La raiz, /discusion, tiene un nodo /temas como hijo. Bajo este nodo hay un conjunto de nombres de temas (como ser tecnología, actualidad, y más), cada uno de los cuales apunta a un hilo de discusión. Dentro de esta estructura, resulta fácil recuperar hilos de discusión al escribir algo después de /temas/.
  • 6. Verbos HTTP Java Web Services Request: GET/users Response: 200 content-type: application/json Request: GET/users/11 Response: 200 content-type: application/json Request: POST/users Response: 201 content-type:application/json Request: PUT/11 Response: 200 content-type: application/json Request : DELETE/11 Response: 204 no content
  • 7. Recursos Java Web Services Algunos códigos típicos mas su descripción  OK(200, "OK")  CREATED(201, "Created")  ACCEPTED(202, "Accepted")  NO_CONTENT(204, "No Content")  NOT_MODIFIED(304, "Not Modified"),  NOT_FOUND(404, "Not Found")  NOT_ACCEPTABLE(406, "Not Acceptable") /users: Listado de usuarios /users/{id}: Muestra un usuario
  • 8. Múltiples representaciones Java Web Services  Content-Type: Nos dice que tipo de representación tiene los datos que enviamos  Accept: Le decimos la representación del dato esperado y luego a esperar.
  • 9. HTTPs Headers Java Web Services  Content-Type: Nos dice que tipo de representación tiene los datos que enviamos.  Accept: Le decimos la representación del dato esperado y luego a esperar.  ETag: Podemos controlar si el recurso ha sido modificado desde la ultima vez que accedimos con un hash.  If-None-Match: Se usa para validar su valor contra el Etag para ver si es distinto y actualizarlo, If-Match hace lo inverno. Si no hay cambios el servidor puede devolver una respuesta con estado HTTP 304 Not Modified.  Last-Modified/If-Modified-Since: Permite saber si el recurso se modificado en base a la fecha del sistema
  • 10. HATEOAS (Soportado por JAX-RS 2.0) Java Web Services HATEOAS (Hypermedia as the Engine of Application State), Es una restricción de la arquitectura de la aplicación REST que lo distingue de la mayoría de otras arquitecturas. El principio es que un cliente interactúa con una aplicación de red completamente a través de hipermedia proporcionadas dinámicamente por los servidores de aplicaciones. Es como que el cliente REST debe ir navegando por la información y no necesita ningún conocimiento previo acerca de la forma de interactuar con cualquier aplicación o servidor más allá de una comprensión genérica de hipermedia. La restricción HATEOAS desacopla cliente y el servidor de una manera que permite la funcionalidad del servidor para evolucionar de forma independiente.
  • 11. REST vs RESTful Java Web Services Dependiendo si cumplimos todos los niveles podemos decir que nuestra API es RESTful. El RMM (Richardson Maturity Model) define 4 niveles [0-3], donde cumplir con el nivel 3 es ser RESTful.
  • 12. Level 0: Swamp of POX(Plain old XML) Java Web Services  La comunicación es sobre HTTP a un End Point. El cliente se comunica tanto de ida como de vuelta al mismo End Point utilizando un verbo HTTP (Ejemplo POST).  Para cada request/mensaje (XML por ejemplo), el server retorna un response/mensaje (XML por ejemplo).  Ejemplos de este nivel son SOAP y XML-RPC.
  • 13. Level 1: Resources Java Web Services  La comunicación es con recursos, el cliente se comunica usando HTTP pero a diferentes recursos.  Cada recursos es alcanzable por medio de su URI.  En lugar de acceder a "http://educacionit.com.ar/articulos", podemos acceder a "http://educacionit.com.ar/articulos/1" o "http://educacionit.com.ar/articulos/2", igualmente en este nivel seguimos usando un único verbo.
  • 14. Level 2: HTTP Verbs Java Web Services  Este nivel se basa en utilizar cada verbo HTTP para un propósito específicos.  Además debemos focalizarnos en el response para que maneje los response code de manera correcta.
  • 15. Level 3 - Hypermedia Controls Java Web Services  La comunicación es con recursos usando los verbos HTTP y manejando distintas representaciones de nuestros recursos.  En este nivel nuestra API puede tener URIs dinámicas que no afectan al cliente ya que deben ser retornadas en el response generado.