SlideShare una empresa de Scribd logo
1 de 37
Descargar para leer sin conexión
Servicios	
  Web	
  
RestFul	
  
Derechos	
  reservados	
  2015	
  
Que	
  es	
  un	
  WebService?	
  
S  Un	
  WebService	
  es	
  una	
  pieza	
  de	
  so9ware	
  
iden;ficada	
  por	
  un	
  URI	
  (Uniform	
  Resource	
  
Iden;fier).	
  
S  Su	
  medio	
  de	
  comunicación	
  se	
  fundamenta	
  en	
  el	
  
uso	
  de	
  XML,	
  TEXT,	
  JSON	
  
S  XML	
  
S  XML	
  Namespace,	
  XML	
  Schema,	
  Xpath,	
  XSLT.	
  
S  HTTP,	
  JSON	
  
Computación	
  distribuida	
  
Client-Server(C/S)
silos
Web-based computing
Servers
Clients
Clients
Servers
Internet
PDA Cell
Phone
Server
LaptopKiosk
Workstation
Web Services/Peer-to-Peer
SOA
computing
Tradicional	
  C/S	
  vs.	
  Servicios	
  Web	
  
Within enterprise
Tied to a set of
programming languages
Procedural
Usually bound to a
particular transport
Tightly-coupled
Efficient processing
(space/time)
 Between enterprises
 Program language
independent
 Message-driven
 Easily bound to different
transports
 Loosely-coupled
 Relatively not efficient
processing
Traditional C/S Web Service
Web	
  Applica>on	
  vs.	
  Web	
  Services	
  
User-to-program
interaction
Static integration of
components
Monolithic service
 Program-to-program
interaction
 Possibility of dynamic
integration of
components (in the
future)
 Possibility of service
aggregation (in the
future)
Web Application Web Service
RestFul	
  
Historia	
  
S  Transferencia	
  de	
  Estado	
  Representacional	
  
(Representa;onal	
  State	
  Transfer)	
  o	
  REST	
  
S  Originado	
  en	
  el	
  año	
  2000	
  por	
  el	
  doctor	
  	
  Roy	
  Fielding	
  
en	
  la	
  Universidad	
  de	
  California	
  en	
  su	
  tesis	
  doctoral	
  
S  Tesis	
  “Es;los	
  de	
  Arquitectura	
  y	
  el	
  Diseño	
  de	
  
Arquitecturas	
  de	
  So9ware	
  basadas	
  en	
  Redes”	
  
S  Principios	
  arquitectónicos	
  de	
  so9ware	
  para	
  usar	
  a	
  la	
  
Web	
  como	
  una	
  plataforma	
  de	
  Procesamiento	
  
Distribuido	
  
Historia	
  
S  U;liza	
  XML	
  y	
  HTTP,	
  sin	
  las	
  abstracciones	
  adicionales	
  
de	
  los	
  protocolos	
  basados	
  en	
  patrones	
  de	
  
intercambio	
  de	
  mensajes	
  como	
  el	
  protocolo	
  de	
  
servicios	
  web	
  SOAP.	
  	
  
S  Se	
  hizo	
  popular	
  muchos	
  años	
  después	
  con	
  la	
  
creación	
  de	
  varios	
  framework	
  que	
  hacen	
  fácil	
  el	
  
desarrollo	
  de	
  servicios	
  RestFul	
  
Historia	
  
S  Muchas	
  empresas	
  con	
  amplios	
  servicios	
  en	
  internet	
  
están	
  migrando	
  sus	
  servicios	
  a	
  Rest.	
  
S  Amazon	
  
S  Facebook	
  
S  Yahoo	
  
S  Twiter	
  
Los	
  4	
  principios	
  de	
  Rest	
  
S  U;liza	
  los	
  métodos	
  HTTP	
  de	
  manera	
  explícita	
  
S  No	
  man;ene	
  estado	
  
S  Expone	
  URIs	
  con	
  forma	
  de	
  directorios	
  
S  Transfiere	
  XML,	
  JavaScript	
  Object	
  Nota;on	
  (JSON),	
  o	
  
ambos	
  
Uso	
  de	
  métodos	
  HTTP	
  de	
  manera	
  explícita	
  
S  RestFul	
  usa	
  de	
  forma	
  explicita	
  los	
  métodos	
  HTTP	
  
para	
  ejecutar	
  acciones	
  de	
  CRUD	
  
Verbo	
  REST	
   Acción	
  
POST	
   Create	
  
GET	
   Read	
  
PUT	
   Update	
  
DELETE	
   Delete	
  
No	
  man>ene	
  estado	
  
S  Basado	
  en	
  el	
  protocolo	
  HTTP	
  sin	
  estado.	
  
S  Servicios	
  mas	
  simples	
  de	
  diseñar,	
  escribir	
  y	
  reu;lizar.	
  
S  El	
  manejo	
  de	
  los	
  estados	
  debe	
  ser	
  hecho	
  por	
  el	
  
cliente	
  de	
  los	
  servicios.	
  
Expone	
  URIs	
  con	
  forma	
  de	
  directorios	
  
S  Las	
  URI	
  de	
  los	
  servicios	
  Rest	
  deben	
  ser	
  intui;vas.	
  
S  Se	
  deben	
  poder	
  deducir	
  de	
  forma	
  fácil.	
  
S  Las	
  URI	
  se	
  definen	
  como	
  una	
  estructura	
  de	
  carpetas	
  
o	
  directorios.	
  
Expone	
  URIs	
  con	
  forma	
  de	
  directorios	
  
S  Direcciones	
  de	
  un	
  blog	
  
–  hdp://www.vortexbird.org/discusion/temas/{tema}	
  
–  hdp://www.vortexbird.org/discusion/{año}/{mes}/{dia}/{tema}	
  
–  hdp://www.vortexbird.org/discusion/2008/12/23/javaEE	
  
Expone	
  URIs	
  con	
  forma	
  de	
  directorios	
  
S  Buenas	
  prac;cas	
  para	
  crear	
  URIs	
  para	
  servicios	
  Rest	
  
S  Ocultar	
  la	
  tecnología	
  usada	
  en	
  el	
  servidor	
  que	
  aparecería	
  como	
  
extensión	
  de	
  archivos	
  (.jsp,	
  .php,	
  .asp),	
  de	
  manera	
  de	
  poder	
  
portar	
  la	
  solución	
  a	
  otra	
  tecnología	
  sin	
  cambiar	
  las	
  URI.	
  
S  Mantener	
  todo	
  el	
  uri	
  en	
  minúsculas.	
  
S  Sus;tuir	
  los	
  espacios	
  con	
  guiones	
  o	
  guiones	
  bajos	
  (uno	
  u	
  otro).	
  
S  Evitar	
  el	
  uso	
  de	
  strings	
  de	
  consulta.	
  
S  En	
  vez	
  de	
  usar	
  un	
  404	
  Not	
  Found	
  si	
  la	
  pe;ción	
  es	
  una	
  URI	
  
parcial,	
  devolver	
  una	
  página	
  o	
  un	
  recurso	
  predeterminado	
  como	
  
respuesta.	
  
S  URI	
  está;co	
  deforma	
  que	
  los	
  usuarios	
  puedan	
  crear	
  favoritos"	
  o	
  
bookmarks.	
  
Transfiere	
  XML,	
  JSON	
  o	
  ambos	
  
S  XML:	
  eXtensible	
  Markup	
  Language	
  
<menu id="file" value="File">
<popup>
<menuitem value="New" onclick="CreateNewDoc()" />
<menuitem value="Open" onclick="OpenDoc()" />
<menuitem value="Close" onclick="CloseDoc()" />
</popup>
</menu>
Transfiere	
  XML,	
  JSON	
  o	
  ambos	
  
S  JSON:	
  	
  JavaScript	
  Object	
  Nota;on	
  
{"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}
Transfiere	
  XML,	
  JSON	
  o	
  ambos	
  
S  Tipos	
  MIME	
  más	
  usados	
  para	
  los	
  servicios	
  web	
  REST	
  
son:	
  
MIME-­‐Type	
   Content-­‐Type	
  
JSON	
   applica;on/json	
  
XML	
   applica;on/xml	
  
XHTML	
   applica;on/xhtml+xml	
  
TEXT	
   text/plain	
  
Web	
  Applica>on	
  Descrip>on	
  
Language	
  (WADL)	
  	
  
Web	
  Applica>on	
  Descrip>on	
  Language	
  
(WADL)	
  	
  
S  Formato	
  XML	
  usado	
  para	
  la	
  descripción	
  de	
  
aplicaciones	
  Web	
  basadas	
  en	
  HTTP.	
  
S  El	
  propósito	
  de	
  WADL	
  es	
  describir	
  los	
  servicios	
  Rest	
  o	
  
cualquier	
  si;o	
  web.	
  
S  Cumple	
  un	
  papel	
  similar	
  a	
  WSDL	
  para	
  servicios	
  SOAP.	
  
S  Estándar	
  administrado	
  por	
  W3C.	
  
Web	
  Applica>on	
  Descrip>on	
  Language	
  
(WADL)	
  	
  •  Yahoo	
  news	
  search	
  
01	
  <?xml	
  version="1.0"	
  standalone="yes"?>	
  
02	
  <applica;on	
  targetNamespace="urn:yahoo:yn"	
  
03	
  	
  xmlns:xsi="hdp://www.w3.org/2001/XMLSchema-­‐instance"	
  
04	
  	
  xmlns:xsd="hdp://www.w3.org/2001/XMLSchema"	
  
05	
  	
  xmlns:yn="urn:yahoo:yn"	
  
06	
  	
  xmlns:tns="urn:yahoo:yn"	
  
07	
  	
  xmlns:ya="urn:yahoo:api"	
  
08	
  	
  xmlns="hdp://research.sun.com/wadl">	
  
09	
  	
  	
  	
  	
  
……….	
  
23	
  	
  <opera;on	
  name="NewsSearch"	
  method="get">	
  
24	
  	
  	
  	
  <request>	
  
25	
  	
  	
  	
  	
  	
  <parameter	
  name="appid"	
  type="xsd:string"	
  required="true"/>	
  
26	
  	
  	
  	
  	
  	
  <parameter	
  name="query"	
  type="xsd:string"	
  required="true"/>	
  
27	
  	
  	
  	
  	
  	
  <parameter	
  name="type"	
  type="xsd:string"/>	
  
28	
  	
  	
  	
  	
  	
  <parameter	
  name="results"	
  type="xsd:int"/>	
  
29	
  	
  	
  	
  	
  	
  <parameter	
  name="start"	
  type="xsd:int"/>	
  
30	
  	
  	
  	
  	
  	
  <parameter	
  name="sort"	
  type="xsd:string"/>	
  
31	
  	
  	
  	
  	
  	
  <parameter	
  name="language"	
  type="xsd:string"/>	
  
32	
  	
  	
  	
  </request>	
  
33	
  	
  	
  	
  <response>	
  
34	
  	
  	
  	
  	
  	
  <representa;on	
  mediaType="text/xml"	
  element="yn:ResultSet">	
  
35	
  	
  	
  	
  	
  	
  	
  	
  <parameter	
  name="totalResults"	
  
36	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  type="xsd:nonNega;veInteger"	
  
37	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  path="/ResultSet/@totalResultsAvailable"/>	
  
38	
  	
  	
  	
  	
  	
  	
  	
  <parameter	
  name="resultsReturned"	
  
39	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  type="xsd:nonNega;veInteger"	
  
40	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  path="/ResultSet/@totalResultsReturned"/>	
  
41	
  	
  	
  	
  	
  	
  	
  	
  <parameter	
  name="resultPosi;on"	
  
42	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  type="xsd:nonNega;veInteger"	
  
43	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  path="/ResultSet/@firstResultPosi;on"/>	
  
44	
  	
  	
  	
  	
  	
  	
  	
  <parameter	
  name="results"	
  path="/ResultSet/Result"/>	
  
45	
  	
  	
  	
  	
  	
  </representa;on>	
  
46	
  	
  	
  	
  	
  	
  <fault	
  name="SearchError"	
  status="400"	
  
47	
  	
  	
  	
  	
  	
  	
  	
  mediaType="text/xml"	
  element="ya:Error">	
  
48	
  	
  	
  	
  	
  	
  	
  	
  <parameter	
  name="msg"	
  path="/Error/Message"	
  
49	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  type="xsd:string"/>	
  
50	
  	
  	
  	
  	
  	
  </fault>	
  
51	
  	
  	
  	
  </response>	
  
52	
  	
  </opera;on>	
  
53</applica;on>	
  
JAX-­‐RS	
  
JAX-­‐RS	
  
S  Especificación	
  para	
  desarrollo	
  de	
  servicios	
  Rest	
  en	
  la	
  
plataforma	
  JavaEE	
  
S  Versión	
  actual	
  JAX-­‐RS	
  1.1	
  
S  JSR	
  311	
  
S  Integrada	
  a	
  JavaEE6	
  
S  Anotaciones	
  para	
  exposición	
  de	
  servicios.	
  
S  Es	
  el	
  equivalente	
  de	
  JAX-­‐WS	
  para	
  SOAP	
  
JAX-­‐RS	
  
S  Implementaciones	
  de	
  referencia.	
  
– Jersey	
  (Sun	
  Oracle)	
  
– CXF	
  (Apache)	
  
– RESTEasy	
  (Jboss)	
  
	
  
JAX-­‐RS	
  
S  Basados	
  en	
  el	
  concepto	
  de	
  POJO	
  (Plain	
  Old	
  Java	
  
Object)	
  
S  Clases	
  sin	
  extends	
  ni	
  implements	
  (Mar;n	
  Fowler)	
  
S  Término	
  heredado	
  de	
  C/C++:	
  Plain	
  Old	
  Data	
  (POD)	
  
S  Tiene	
  sen;do,	
  son	
  clases	
  de	
  datos	
  
Anotaciones	
  JAX-­‐RS	
  
Anotación	
   Descripción	
  
@GET	
   Marca	
  el	
  método	
  como	
  accesible	
  a	
  través	
  del	
  método	
  GET	
  
de	
  HTTP	
  
@POST	
   Marca	
  el	
  método	
  como	
  accesible	
  a	
  través	
  del	
  método	
  
POST	
  de	
  HTTP	
  
@PUT	
   Marca	
  el	
  método	
  como	
  accesible	
  a	
  través	
  del	
  método	
  PUT	
  
de	
  HTTP	
  
@DELETE	
   Marca	
  el	
  método	
  como	
  accesible	
  a	
  través	
  del	
  método	
  
DELETE	
  de	
  HTTP	
  
@HEAD	
   Marca	
  el	
  método	
  como	
  accesible	
  a	
  través	
  del	
  método	
  
HEAD	
  de	
  HTTP	
  
Anotaciones	
  JAX-­‐RS	
  
Anotación	
   Descripción	
  
@Path	
   Indica	
  donde	
  queda	
  alojada	
  la	
  clase	
  o	
  el	
  método.	
  Por	
  
ejemplo	
  /holaMundo/	
  
@PathParam	
   Se	
  usa	
  para	
  asignar	
  a	
  los	
  parámetros	
  de	
  los	
  métodos	
  el	
  
nombre	
  del	
  path	
  usado.	
  
@Consumes	
   Se	
  usa	
  para	
  iden;ficar	
  el	
  ;po	
  de	
  mime	
  que	
  consume	
  el	
  
método	
  u	
  operación	
  del	
  servicios.	
  Ejemplos	
  "applica;on/
xml",	
  "applica;on/json"	
  
@Produces	
   Se	
  usa	
  para	
  iden;ficar	
  el	
  ;po	
  de	
  mime	
  que	
  produce	
  el	
  
método	
  u	
  operación	
  del	
  servicios.	
  Ejemplos	
  "applica;on/
xml",	
  "applica;on/json“	
  
@Provider	
   Se	
  usa	
  para	
  crear	
  una	
  clase	
  especializada	
  que	
  representan	
  
en;ty	
  body.	
  Estas	
  clases	
  implementan	
  
MessageBodyReader	
  or	
  MessageBodyWrite	
  
Tipos	
  de	
  datos	
  soportados	
  
Tipo	
  de	
  dato	
  Java	
   Mime	
  Type	
  
byte[]	
   All	
  media	
  types	
  (*/*)	
  
ava.lang.String	
   All	
  text	
  media	
  types	
  (text/*)	
  
java.io.InputStream	
   All	
  media	
  types	
  (*/*)	
  
java.io.Reader	
   All	
  media	
  types	
  (*/*)	
  
java.io.File	
   All	
  media	
  types	
  (*/*)	
  
javax.ac;va;on.DataSource	
   All	
  media	
  types	
  (*/*)	
  
javax.xml.transform.Source	
   XML	
  media	
  types	
  (text/xml,	
  applica;on/xml,	
  and	
  
applica;on/*+xml)	
  
javax.xml.bind.JAXBElement	
  and	
  applica;on-­‐
supplied	
  JAXB	
  classes	
  
XML	
  media	
  types	
  (text/xml,	
  applica;on/xml,	
  and	
  
applica;on/*+xml)	
  
Mul;valuedMap<String,	
  String>	
   Form	
  content	
  (applica;on/x-­‐www-­‐form-­‐
urlencoded)	
  
StreamingOutput	
   All	
  media	
  types	
  (*/*),	
  MessageBodyWriter	
  only	
  
Código	
  de	
  ejemplo	
  
package	
  com.vortexbir.rest.services;	
  
	
  
import	
  javax.ws.rs.Consumes;	
  
import	
  javax.ws.rs.GET;	
  
import	
  javax.ws.rs.Path;	
  
import	
  javax.ws.rs.PathParam;	
  
import	
  javax.ws.rs.Produces;	
  
	
  
@Consumes({"applica;on/xml",	
  "applica;on/json","text/plain"})	
  
@Produces({"applica;on/xml",	
  "applica;on/json","text/plain"})	
  
@Path("operacionesMatema;cas")	
  
public	
  class	
  OperacionesMatema>cas	
  {	
  
	
  	
  
	
  @GET	
  
	
  @Path("sumar/{numero_uno}/{numero_dos}")	
  
	
  public	
  String	
  sumar(@PathParam("numero_uno")Integer	
  n1,@PathParam("numero_dos")Integer	
  n2){	
  
	
   	
  int	
  res=n1+n2;	
  
	
   	
  return	
  ""+res;	
  
	
  }	
  
}	
  
hdp://127.0.0.1:8080/demoRest/services/operacionesMatema;cas/sumar/52/6	
  
web.xml	
  jersey	
  
<web-­‐app	
  xmlns="hgp://java.sun.com/xml/ns/javaee"	
  version="3.0"	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  xmlns:xsi="hgp://www.w3.org/2001/XMLSchema-­‐instance"	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  xsi:schemaLoca>on="hgp://java.sun.com/xml/ns/javaee	
  hgp://java.sun.com/xml/ns/javaee/web-­‐
app_3_0.xsd">	
  
	
  
	
  	
  	
  	
  <servlet>	
  
	
  	
  	
  	
  	
  	
  	
  	
  <servlet-­‐name>ServletAdaptor</servlet-­‐name>	
  
	
  	
  	
  	
  	
  	
  	
  	
  <servlet-­‐class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-­‐class>	
  
	
  	
  	
  	
  	
  	
  	
  	
  <load-­‐on-­‐startup>1</load-­‐on-­‐startup>	
  
	
  	
  	
  	
  </servlet>	
  
	
  
	
  	
  	
  	
  <servlet-­‐mapping>	
  
	
  	
  	
  	
  	
  	
  	
  	
  <servlet-­‐name>ServletAdaptor</servlet-­‐name>	
  
	
  	
  	
  	
  	
  	
  	
  	
  <url-­‐pagern>/services/*</url-­‐pagern>	
  
	
  	
  	
  	
  </servlet-­‐mapping>	
  
	
  
</web-­‐app>	
  
WADL	
  de	
  ejemplo	
  
<?xml	
  version="1.0"	
  encoding="UTF-­‐8"	
  standalone="yes"?>	
  
<applica>on	
  xmlns="hgp://research.sun.com/wadl/2006/10">	
  
	
  	
  	
  	
  <doc	
  xmlns:jersey="hgp://jersey.dev.java.net/"	
  jersey:generatedBy="Jersey:	
  1.0.3.1	
  08/14/2009	
  04:19	
  PM"/>	
  
	
  	
  	
  	
  <resources	
  base="hgp://127.0.0.1:9090/demoRest/services/">	
  
	
  	
  	
  	
  	
  	
  	
  	
  <resource	
  path="operacionesMatema>cas">	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <resource	
  path="sumar/{numero_uno}/{numero_dos}">	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <param	
  xmlns:xs="hgp://www.w3.org/2001/XMLSchema"	
  type="xs:int"	
  style="template"	
  
name="numero_uno"/>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <param	
  xmlns:xs="hgp://www.w3.org/2001/XMLSchema"	
  type="xs:int"	
  style="template"	
  
name="numero_dos"/>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <method	
  name="GET"	
  id="sumar">	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <response>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <representa>on	
  mediaType="applica>on/xml"/>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <representa>on	
  mediaType="applica>on/json"/>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  <representa>on	
  mediaType="text/plain"/>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  </response>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  </method>	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  </resource>	
  
	
  	
  	
  	
  	
  	
  	
  	
  </resource>	
  
	
  	
  	
  	
  </resources>	
  
</applica>on>	
  
hdp://127.0.0.1:8080/demoRest/services/applica;on.wadl	
  
hdp://127.0.0.1:8080/demoRest/operacionesMatema;cas/services?_wadl	
  
hdp://127.0.0.1:8080/demoRest/operacionesMatema;cas/resources/applica;on.wadl	
  
Taller	
  desarrollo	
  de	
  servicios	
  Rest	
  
S  Servicio	
  Operaciones	
  Matemá;cas	
  
S  Sumar	
  
S  Restar	
  
S  Mul;plicar	
  
S  Dividir	
  
S  Cliente	
  del	
  servicio	
  
Taller	
  desarrollo	
  de	
  servicios	
  Rest	
  
S  Servicio	
  Cliente	
  
S  Crear	
  
S  Modificar	
  
S  Borrar	
  
S  Consultar	
  por	
  ID	
  
S  Consultar	
  Todos	
  
S  Cliente	
  del	
  servicio	
  
ENLACES	
  
S  hdp://jersey.java.net/	
  
S  hdps://addons.mozilla.org/es-­‐ES/firefox/addon/
poster/	
  
S  hdp://www.w3.org/Submission/wadl/	
  
S  hdp://www.w3.org/Submission/2009/03/
Comment	
  
S  hdp://www.ibm.com/developerworks/
webservices/library/ws-­‐restwsdl/	
  
S  hdp://wadl.java.net/
ENLACES	
  
S  hdp://webservices.xml.com/	
  
S  hdps://blueprints.dev.java.net/books.html	
  
Información	
  de	
  contacto	
  
S  Si;o	
  Web:	
  www.vortexbird.com	
  
S  Blog:	
  hdp://blog.vortexbird.com	
  
S  Contacto	
  vía	
  mail:	
  dgomez@vortexbird.com	
  
S  Teléfonos:	
  +57	
  	
  -­‐	
  (316	
  482	
  4629)	
  
S  Cali,	
  Colombia	
  
Servicios Rest con Jersey

Más contenido relacionado

La actualidad más candente

Servicios web java php-perl-google
Servicios web java php-perl-googleServicios web java php-perl-google
Servicios web java php-perl-googleJosue Hernandez
 
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
 
Curso TIC de PHP y MSQL
Curso TIC de PHP y MSQLCurso TIC de PHP y MSQL
Curso TIC de PHP y MSQLWilian
 
7/9 Curso JEE5, Soa, Web Services, ESB y XML
7/9 Curso JEE5, Soa, Web Services, ESB y XML7/9 Curso JEE5, Soa, Web Services, ESB y XML
7/9 Curso JEE5, Soa, Web Services, ESB y XMLJuan Carlos Rubio Pineda
 
Arquitectura Rest
Arquitectura RestArquitectura Rest
Arquitectura RestIsrael Rey
 
Desarrollando Una Mejor Experiencia De Usuario Con Ajax
Desarrollando Una Mejor Experiencia De Usuario Con AjaxDesarrollando Una Mejor Experiencia De Usuario Con Ajax
Desarrollando Una Mejor Experiencia De Usuario Con Ajaxjuliocasal
 
Servicios web en php, perl, java
Servicios web en php, perl, javaServicios web en php, perl, java
Servicios web en php, perl, javaFaby Marcos Solis
 
Programación web con JSP
Programación web con JSPProgramación web con JSP
Programación web con JSPousli07
 
Java Primeros Pasos Revista- Edición 2
Java Primeros Pasos Revista- Edición 2Java Primeros Pasos Revista- Edición 2
Java Primeros Pasos Revista- Edición 2guest39ff1b
 
Servlets y jsp
Servlets y jspServlets y jsp
Servlets y jspdtbadboy0
 
WORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API RESTWORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API RESTBEEVA_es
 
Programacion web java
Programacion web javaProgramacion web java
Programacion web javaCésar Ocampo
 

La actualidad más candente (20)

Introducción a REST - SymfonyVLC
Introducción a REST - SymfonyVLCIntroducción a REST - SymfonyVLC
Introducción a REST - SymfonyVLC
 
Servicios web java php-perl-google
Servicios web java php-perl-googleServicios web java php-perl-google
Servicios web java php-perl-google
 
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
 
Curso TIC de PHP y MSQL
Curso TIC de PHP y MSQLCurso TIC de PHP y MSQL
Curso TIC de PHP y MSQL
 
7/9 Curso JEE5, Soa, Web Services, ESB y XML
7/9 Curso JEE5, Soa, Web Services, ESB y XML7/9 Curso JEE5, Soa, Web Services, ESB y XML
7/9 Curso JEE5, Soa, Web Services, ESB y XML
 
Arquitectura Rest
Arquitectura RestArquitectura Rest
Arquitectura Rest
 
Desarrollando Una Mejor Experiencia De Usuario Con Ajax
Desarrollando Una Mejor Experiencia De Usuario Con AjaxDesarrollando Una Mejor Experiencia De Usuario Con Ajax
Desarrollando Una Mejor Experiencia De Usuario Con Ajax
 
Soap eduardo cano
Soap  eduardo canoSoap  eduardo cano
Soap eduardo cano
 
Servicios web en php, perl, java
Servicios web en php, perl, javaServicios web en php, perl, java
Servicios web en php, perl, java
 
Introducción a las API's Rest
Introducción a las API's RestIntroducción a las API's Rest
Introducción a las API's Rest
 
Arquitectura REST
Arquitectura RESTArquitectura REST
Arquitectura REST
 
Programación web con JSP
Programación web con JSPProgramación web con JSP
Programación web con JSP
 
Java Primeros Pasos Revista- Edición 2
Java Primeros Pasos Revista- Edición 2Java Primeros Pasos Revista- Edición 2
Java Primeros Pasos Revista- Edición 2
 
Servicios web Extendido_error perl
Servicios web Extendido_error perlServicios web Extendido_error perl
Servicios web Extendido_error perl
 
Servlets y jsp
Servlets y jspServlets y jsp
Servlets y jsp
 
Primefaces
PrimefacesPrimefaces
Primefaces
 
WORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API RESTWORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API REST
 
introduccion a Ajax
introduccion a Ajaxintroduccion a Ajax
introduccion a Ajax
 
Programacion web java
Programacion web javaProgramacion web java
Programacion web java
 
Servicios web
Servicios webServicios web
Servicios web
 

Similar a Servicios Rest con Jersey

Similar a Servicios Rest con Jersey (20)

Servicios web
Servicios webServicios web
Servicios web
 
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)
 
Servicios Web II.ppt
Servicios Web II.pptServicios Web II.ppt
Servicios Web II.ppt
 
Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con REST
 
Servicios web
Servicios webServicios web
Servicios web
 
01 Ext Js Introduccion
01 Ext Js   Introduccion01 Ext Js   Introduccion
01 Ext Js Introduccion
 
Servicio web java php perl google
Servicio web  java php perl googleServicio web  java php perl google
Servicio web java php perl google
 
Servicios web java, php, perl, google
Servicios web java, php, perl, googleServicios web java, php, perl, google
Servicios web java, php, perl, google
 
Web services SOAP con JAX-WS
Web services SOAP con JAX-WSWeb services SOAP con JAX-WS
Web services SOAP con JAX-WS
 
Servicios web
Servicios webServicios web
Servicios web
 
J2 Ee Para Seres Humanos Slides
J2 Ee Para Seres Humanos SlidesJ2 Ee Para Seres Humanos Slides
J2 Ee Para Seres Humanos Slides
 
Servicios web
Servicios webServicios web
Servicios web
 
Ruby y las arquitecturas orientadas a servicios
Ruby y las arquitecturas orientadas a servicios Ruby y las arquitecturas orientadas a servicios
Ruby y las arquitecturas orientadas a servicios
 
SOAP y Web Services
SOAP y Web ServicesSOAP y Web Services
SOAP y Web Services
 
Rest Conf Rails
Rest Conf RailsRest Conf Rails
Rest Conf Rails
 
Servicios web
Servicios webServicios web
Servicios web
 
Conceptos Introductorios Del Web 2
Conceptos Introductorios Del Web 2Conceptos Introductorios Del Web 2
Conceptos Introductorios Del Web 2
 
Tecnologías web.pptx
Tecnologías web.pptxTecnologías web.pptx
Tecnologías web.pptx
 
Conceptos acerca de Ajax
Conceptos acerca  de AjaxConceptos acerca  de Ajax
Conceptos acerca de Ajax
 
Webservices
WebservicesWebservices
Webservices
 

Más de Vortexbird

Spring security 2017
Spring security 2017Spring security 2017
Spring security 2017Vortexbird
 
Spring ORM JPA
Spring ORM JPASpring ORM JPA
Spring ORM JPAVortexbird
 
Spring framework core 2017
Spring framework core 2017Spring framework core 2017
Spring framework core 2017Vortexbird
 
Bean validation 2017
Bean validation 2017Bean validation 2017
Bean validation 2017Vortexbird
 
Introduccion a JPA
Introduccion a JPAIntroduccion a JPA
Introduccion a JPAVortexbird
 
Log en Aplicaciones Java y JavaEE
Log en Aplicaciones Java y JavaEELog en Aplicaciones Java y JavaEE
Log en Aplicaciones Java y JavaEEVortexbird
 
Vb.pd.zathuracode.v5.0.1
Vb.pd.zathuracode.v5.0.1Vb.pd.zathuracode.v5.0.1
Vb.pd.zathuracode.v5.0.1Vortexbird
 
Zathuracode Version 5.0.0
Zathuracode Version 5.0.0Zathuracode Version 5.0.0
Zathuracode Version 5.0.0Vortexbird
 
Orm hibernate springframework
Orm hibernate springframeworkOrm hibernate springframework
Orm hibernate springframeworkVortexbird
 
Introducccion springframework
Introducccion springframeworkIntroducccion springframework
Introducccion springframeworkVortexbird
 

Más de Vortexbird (10)

Spring security 2017
Spring security 2017Spring security 2017
Spring security 2017
 
Spring ORM JPA
Spring ORM JPASpring ORM JPA
Spring ORM JPA
 
Spring framework core 2017
Spring framework core 2017Spring framework core 2017
Spring framework core 2017
 
Bean validation 2017
Bean validation 2017Bean validation 2017
Bean validation 2017
 
Introduccion a JPA
Introduccion a JPAIntroduccion a JPA
Introduccion a JPA
 
Log en Aplicaciones Java y JavaEE
Log en Aplicaciones Java y JavaEELog en Aplicaciones Java y JavaEE
Log en Aplicaciones Java y JavaEE
 
Vb.pd.zathuracode.v5.0.1
Vb.pd.zathuracode.v5.0.1Vb.pd.zathuracode.v5.0.1
Vb.pd.zathuracode.v5.0.1
 
Zathuracode Version 5.0.0
Zathuracode Version 5.0.0Zathuracode Version 5.0.0
Zathuracode Version 5.0.0
 
Orm hibernate springframework
Orm hibernate springframeworkOrm hibernate springframework
Orm hibernate springframework
 
Introducccion springframework
Introducccion springframeworkIntroducccion springframework
Introducccion springframework
 

Servicios Rest con Jersey

  • 1. Servicios  Web   RestFul   Derechos  reservados  2015  
  • 2. Que  es  un  WebService?   S  Un  WebService  es  una  pieza  de  so9ware   iden;ficada  por  un  URI  (Uniform  Resource   Iden;fier).   S  Su  medio  de  comunicación  se  fundamenta  en  el   uso  de  XML,  TEXT,  JSON   S  XML   S  XML  Namespace,  XML  Schema,  Xpath,  XSLT.   S  HTTP,  JSON  
  • 3. Computación  distribuida   Client-Server(C/S) silos Web-based computing Servers Clients Clients Servers Internet PDA Cell Phone Server LaptopKiosk Workstation Web Services/Peer-to-Peer SOA computing
  • 4. Tradicional  C/S  vs.  Servicios  Web   Within enterprise Tied to a set of programming languages Procedural Usually bound to a particular transport Tightly-coupled Efficient processing (space/time)  Between enterprises  Program language independent  Message-driven  Easily bound to different transports  Loosely-coupled  Relatively not efficient processing Traditional C/S Web Service
  • 5. Web  Applica>on  vs.  Web  Services   User-to-program interaction Static integration of components Monolithic service  Program-to-program interaction  Possibility of dynamic integration of components (in the future)  Possibility of service aggregation (in the future) Web Application Web Service
  • 7. Historia   S  Transferencia  de  Estado  Representacional   (Representa;onal  State  Transfer)  o  REST   S  Originado  en  el  año  2000  por  el  doctor    Roy  Fielding   en  la  Universidad  de  California  en  su  tesis  doctoral   S  Tesis  “Es;los  de  Arquitectura  y  el  Diseño  de   Arquitecturas  de  So9ware  basadas  en  Redes”   S  Principios  arquitectónicos  de  so9ware  para  usar  a  la   Web  como  una  plataforma  de  Procesamiento   Distribuido  
  • 8. Historia   S  U;liza  XML  y  HTTP,  sin  las  abstracciones  adicionales   de  los  protocolos  basados  en  patrones  de   intercambio  de  mensajes  como  el  protocolo  de   servicios  web  SOAP.     S  Se  hizo  popular  muchos  años  después  con  la   creación  de  varios  framework  que  hacen  fácil  el   desarrollo  de  servicios  RestFul  
  • 9. Historia   S  Muchas  empresas  con  amplios  servicios  en  internet   están  migrando  sus  servicios  a  Rest.   S  Amazon   S  Facebook   S  Yahoo   S  Twiter  
  • 10. Los  4  principios  de  Rest   S  U;liza  los  métodos  HTTP  de  manera  explícita   S  No  man;ene  estado   S  Expone  URIs  con  forma  de  directorios   S  Transfiere  XML,  JavaScript  Object  Nota;on  (JSON),  o   ambos  
  • 11. Uso  de  métodos  HTTP  de  manera  explícita   S  RestFul  usa  de  forma  explicita  los  métodos  HTTP   para  ejecutar  acciones  de  CRUD   Verbo  REST   Acción   POST   Create   GET   Read   PUT   Update   DELETE   Delete  
  • 12. No  man>ene  estado   S  Basado  en  el  protocolo  HTTP  sin  estado.   S  Servicios  mas  simples  de  diseñar,  escribir  y  reu;lizar.   S  El  manejo  de  los  estados  debe  ser  hecho  por  el   cliente  de  los  servicios.  
  • 13. Expone  URIs  con  forma  de  directorios   S  Las  URI  de  los  servicios  Rest  deben  ser  intui;vas.   S  Se  deben  poder  deducir  de  forma  fácil.   S  Las  URI  se  definen  como  una  estructura  de  carpetas   o  directorios.  
  • 14. Expone  URIs  con  forma  de  directorios   S  Direcciones  de  un  blog   –  hdp://www.vortexbird.org/discusion/temas/{tema}   –  hdp://www.vortexbird.org/discusion/{año}/{mes}/{dia}/{tema}   –  hdp://www.vortexbird.org/discusion/2008/12/23/javaEE  
  • 15. Expone  URIs  con  forma  de  directorios   S  Buenas  prac;cas  para  crear  URIs  para  servicios  Rest   S  Ocultar  la  tecnología  usada  en  el  servidor  que  aparecería  como   extensión  de  archivos  (.jsp,  .php,  .asp),  de  manera  de  poder   portar  la  solución  a  otra  tecnología  sin  cambiar  las  URI.   S  Mantener  todo  el  uri  en  minúsculas.   S  Sus;tuir  los  espacios  con  guiones  o  guiones  bajos  (uno  u  otro).   S  Evitar  el  uso  de  strings  de  consulta.   S  En  vez  de  usar  un  404  Not  Found  si  la  pe;ción  es  una  URI   parcial,  devolver  una  página  o  un  recurso  predeterminado  como   respuesta.   S  URI  está;co  deforma  que  los  usuarios  puedan  crear  favoritos"  o   bookmarks.  
  • 16. Transfiere  XML,  JSON  o  ambos   S  XML:  eXtensible  Markup  Language   <menu id="file" value="File"> <popup> <menuitem value="New" onclick="CreateNewDoc()" /> <menuitem value="Open" onclick="OpenDoc()" /> <menuitem value="Close" onclick="CloseDoc()" /> </popup> </menu>
  • 17. Transfiere  XML,  JSON  o  ambos   S  JSON:    JavaScript  Object  Nota;on   {"menu": { "id": "file", "value": "File", "popup": { "menuitem": [ {"value": "New", "onclick": "CreateNewDoc()"}, {"value": "Open", "onclick": "OpenDoc()"}, {"value": "Close", "onclick": "CloseDoc()"} ] } }}
  • 18. Transfiere  XML,  JSON  o  ambos   S  Tipos  MIME  más  usados  para  los  servicios  web  REST   son:   MIME-­‐Type   Content-­‐Type   JSON   applica;on/json   XML   applica;on/xml   XHTML   applica;on/xhtml+xml   TEXT   text/plain  
  • 19. Web  Applica>on  Descrip>on   Language  (WADL)    
  • 20. Web  Applica>on  Descrip>on  Language   (WADL)     S  Formato  XML  usado  para  la  descripción  de   aplicaciones  Web  basadas  en  HTTP.   S  El  propósito  de  WADL  es  describir  los  servicios  Rest  o   cualquier  si;o  web.   S  Cumple  un  papel  similar  a  WSDL  para  servicios  SOAP.   S  Estándar  administrado  por  W3C.  
  • 21. Web  Applica>on  Descrip>on  Language   (WADL)    •  Yahoo  news  search   01  <?xml  version="1.0"  standalone="yes"?>   02  <applica;on  targetNamespace="urn:yahoo:yn"   03    xmlns:xsi="hdp://www.w3.org/2001/XMLSchema-­‐instance"   04    xmlns:xsd="hdp://www.w3.org/2001/XMLSchema"   05    xmlns:yn="urn:yahoo:yn"   06    xmlns:tns="urn:yahoo:yn"   07    xmlns:ya="urn:yahoo:api"   08    xmlns="hdp://research.sun.com/wadl">   09           ……….   23    <opera;on  name="NewsSearch"  method="get">   24        <request>   25            <parameter  name="appid"  type="xsd:string"  required="true"/>   26            <parameter  name="query"  type="xsd:string"  required="true"/>   27            <parameter  name="type"  type="xsd:string"/>   28            <parameter  name="results"  type="xsd:int"/>   29            <parameter  name="start"  type="xsd:int"/>   30            <parameter  name="sort"  type="xsd:string"/>   31            <parameter  name="language"  type="xsd:string"/>   32        </request>   33        <response>   34            <representa;on  mediaType="text/xml"  element="yn:ResultSet">   35                <parameter  name="totalResults"   36                    type="xsd:nonNega;veInteger"   37                    path="/ResultSet/@totalResultsAvailable"/>   38                <parameter  name="resultsReturned"   39                    type="xsd:nonNega;veInteger"   40                    path="/ResultSet/@totalResultsReturned"/>   41                <parameter  name="resultPosi;on"   42                    type="xsd:nonNega;veInteger"   43                    path="/ResultSet/@firstResultPosi;on"/>   44                <parameter  name="results"  path="/ResultSet/Result"/>   45            </representa;on>   46            <fault  name="SearchError"  status="400"   47                mediaType="text/xml"  element="ya:Error">   48                <parameter  name="msg"  path="/Error/Message"   49                    type="xsd:string"/>   50            </fault>   51        </response>   52    </opera;on>   53</applica;on>  
  • 23. JAX-­‐RS   S  Especificación  para  desarrollo  de  servicios  Rest  en  la   plataforma  JavaEE   S  Versión  actual  JAX-­‐RS  1.1   S  JSR  311   S  Integrada  a  JavaEE6   S  Anotaciones  para  exposición  de  servicios.   S  Es  el  equivalente  de  JAX-­‐WS  para  SOAP  
  • 24. JAX-­‐RS   S  Implementaciones  de  referencia.   – Jersey  (Sun  Oracle)   – CXF  (Apache)   – RESTEasy  (Jboss)    
  • 25. JAX-­‐RS   S  Basados  en  el  concepto  de  POJO  (Plain  Old  Java   Object)   S  Clases  sin  extends  ni  implements  (Mar;n  Fowler)   S  Término  heredado  de  C/C++:  Plain  Old  Data  (POD)   S  Tiene  sen;do,  son  clases  de  datos  
  • 26. Anotaciones  JAX-­‐RS   Anotación   Descripción   @GET   Marca  el  método  como  accesible  a  través  del  método  GET   de  HTTP   @POST   Marca  el  método  como  accesible  a  través  del  método   POST  de  HTTP   @PUT   Marca  el  método  como  accesible  a  través  del  método  PUT   de  HTTP   @DELETE   Marca  el  método  como  accesible  a  través  del  método   DELETE  de  HTTP   @HEAD   Marca  el  método  como  accesible  a  través  del  método   HEAD  de  HTTP  
  • 27. Anotaciones  JAX-­‐RS   Anotación   Descripción   @Path   Indica  donde  queda  alojada  la  clase  o  el  método.  Por   ejemplo  /holaMundo/   @PathParam   Se  usa  para  asignar  a  los  parámetros  de  los  métodos  el   nombre  del  path  usado.   @Consumes   Se  usa  para  iden;ficar  el  ;po  de  mime  que  consume  el   método  u  operación  del  servicios.  Ejemplos  "applica;on/ xml",  "applica;on/json"   @Produces   Se  usa  para  iden;ficar  el  ;po  de  mime  que  produce  el   método  u  operación  del  servicios.  Ejemplos  "applica;on/ xml",  "applica;on/json“   @Provider   Se  usa  para  crear  una  clase  especializada  que  representan   en;ty  body.  Estas  clases  implementan   MessageBodyReader  or  MessageBodyWrite  
  • 28. Tipos  de  datos  soportados   Tipo  de  dato  Java   Mime  Type   byte[]   All  media  types  (*/*)   ava.lang.String   All  text  media  types  (text/*)   java.io.InputStream   All  media  types  (*/*)   java.io.Reader   All  media  types  (*/*)   java.io.File   All  media  types  (*/*)   javax.ac;va;on.DataSource   All  media  types  (*/*)   javax.xml.transform.Source   XML  media  types  (text/xml,  applica;on/xml,  and   applica;on/*+xml)   javax.xml.bind.JAXBElement  and  applica;on-­‐ supplied  JAXB  classes   XML  media  types  (text/xml,  applica;on/xml,  and   applica;on/*+xml)   Mul;valuedMap<String,  String>   Form  content  (applica;on/x-­‐www-­‐form-­‐ urlencoded)   StreamingOutput   All  media  types  (*/*),  MessageBodyWriter  only  
  • 29. Código  de  ejemplo   package  com.vortexbir.rest.services;     import  javax.ws.rs.Consumes;   import  javax.ws.rs.GET;   import  javax.ws.rs.Path;   import  javax.ws.rs.PathParam;   import  javax.ws.rs.Produces;     @Consumes({"applica;on/xml",  "applica;on/json","text/plain"})   @Produces({"applica;on/xml",  "applica;on/json","text/plain"})   @Path("operacionesMatema;cas")   public  class  OperacionesMatema>cas  {        @GET    @Path("sumar/{numero_uno}/{numero_dos}")    public  String  sumar(@PathParam("numero_uno")Integer  n1,@PathParam("numero_dos")Integer  n2){      int  res=n1+n2;      return  ""+res;    }   }   hdp://127.0.0.1:8080/demoRest/services/operacionesMatema;cas/sumar/52/6  
  • 30. web.xml  jersey   <web-­‐app  xmlns="hgp://java.sun.com/xml/ns/javaee"  version="3.0"                    xmlns:xsi="hgp://www.w3.org/2001/XMLSchema-­‐instance"                    xsi:schemaLoca>on="hgp://java.sun.com/xml/ns/javaee  hgp://java.sun.com/xml/ns/javaee/web-­‐ app_3_0.xsd">            <servlet>                  <servlet-­‐name>ServletAdaptor</servlet-­‐name>                  <servlet-­‐class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-­‐class>                  <load-­‐on-­‐startup>1</load-­‐on-­‐startup>          </servlet>            <servlet-­‐mapping>                  <servlet-­‐name>ServletAdaptor</servlet-­‐name>                  <url-­‐pagern>/services/*</url-­‐pagern>          </servlet-­‐mapping>     </web-­‐app>  
  • 31. WADL  de  ejemplo   <?xml  version="1.0"  encoding="UTF-­‐8"  standalone="yes"?>   <applica>on  xmlns="hgp://research.sun.com/wadl/2006/10">          <doc  xmlns:jersey="hgp://jersey.dev.java.net/"  jersey:generatedBy="Jersey:  1.0.3.1  08/14/2009  04:19  PM"/>          <resources  base="hgp://127.0.0.1:9090/demoRest/services/">                  <resource  path="operacionesMatema>cas">                          <resource  path="sumar/{numero_uno}/{numero_dos}">                                  <param  xmlns:xs="hgp://www.w3.org/2001/XMLSchema"  type="xs:int"  style="template"   name="numero_uno"/>                                  <param  xmlns:xs="hgp://www.w3.org/2001/XMLSchema"  type="xs:int"  style="template"   name="numero_dos"/>                                  <method  name="GET"  id="sumar">                                          <response>                                                  <representa>on  mediaType="applica>on/xml"/>                                                  <representa>on  mediaType="applica>on/json"/>                                                  <representa>on  mediaType="text/plain"/>                                          </response>                                  </method>                          </resource>                  </resource>          </resources>   </applica>on>   hdp://127.0.0.1:8080/demoRest/services/applica;on.wadl   hdp://127.0.0.1:8080/demoRest/operacionesMatema;cas/services?_wadl   hdp://127.0.0.1:8080/demoRest/operacionesMatema;cas/resources/applica;on.wadl  
  • 32. Taller  desarrollo  de  servicios  Rest   S  Servicio  Operaciones  Matemá;cas   S  Sumar   S  Restar   S  Mul;plicar   S  Dividir   S  Cliente  del  servicio  
  • 33. Taller  desarrollo  de  servicios  Rest   S  Servicio  Cliente   S  Crear   S  Modificar   S  Borrar   S  Consultar  por  ID   S  Consultar  Todos   S  Cliente  del  servicio  
  • 34. ENLACES   S  hdp://jersey.java.net/   S  hdps://addons.mozilla.org/es-­‐ES/firefox/addon/ poster/   S  hdp://www.w3.org/Submission/wadl/   S  hdp://www.w3.org/Submission/2009/03/ Comment   S  hdp://www.ibm.com/developerworks/ webservices/library/ws-­‐restwsdl/   S  hdp://wadl.java.net/
  • 35. ENLACES   S  hdp://webservices.xml.com/   S  hdps://blueprints.dev.java.net/books.html  
  • 36. Información  de  contacto   S  Si;o  Web:  www.vortexbird.com   S  Blog:  hdp://blog.vortexbird.com   S  Contacto  vía  mail:  dgomez@vortexbird.com   S  Teléfonos:  +57    -­‐  (316  482  4629)   S  Cali,  Colombia