Sei sulla pagina 1di 25

Curso introductorio a los servicios web

Jorge Lpez Prez <jorgelp@us.es>


Universidad de Sevilla

1 de diciembre de 2008

ndice

NuSOAP Servidor Ejercicios REST Conceptos Ejemplo comentado Conclusiones nales

2 de 23

ndice

NuSOAP Servidor Ejercicios REST Conclusiones nales

3 de 23

NuSOAP: servidor SOAP (I)

NuSOAP genera al vuelo el documento WSDL para nuestro servidor en http://..../servidor.php?wsdl Crear un servidor requiere mayor conocimiento de cmo est estructurado WSDL La principal dicultad est en denir tipos complejos, si los hubiera

4 de 23

NuSOAP: servidor SOAP (II)


Denicin de una funcin:
function mifuncion ( $p1 , $p2 , $p3 , ...) { // Procesado // Errores ? if ( hayErrorCliente ()) { return new soap_fault ( Client , , El parametro X es invalido ); } else if ( hayErrorServidor ()) { return new soap_fault ( Server , , Ocurrio un error en el servidor ); } else { return $valorPHP ; } }
5 de 23

NuSOAP: servidor SOAP (III)


Publicacin del servicio SOAP:
$server = new soap_server ; // Par ametros para WSDL ( sin ellos no se genera ) $namespace = urn : MIwsdl ; $server - > configureWSDL ( MIwsdl , $namespace ); $server - > register ( " mifuncion " , // nombre array ( nombre = > xsd : string ) , // entrada array ( return = > xsd : string ) , // salida $namespace , // namespace $server - > wsdl - > endpoint . # mifuncion , // SOAPAaction ( x ) rpc , // estilo de m etodo encoded , // uso de par ametros Hace ... // documentaci on ); $server - > service ( $rawPost ); // $rawPost = documento de POST
6 de 23

Servidor para holaMundo

Hay que crear la funcin hola Recordemos que NuSOAP genera el WSDL bajo demanda WSDL: URL 1; cliente local: URL 2
7 de 23

Servidor para calculadora

Hay que completar el chero calcServ.php WSDL: URL 3; cliente local: URL 4

8 de 23

NuSOAP: servidor SOAP (IV)


Creacin de un tipo complejo: addComplexType La mayora de parmetros son opcionales
$server - > wsdl - > addComplexType ( nombretipo , // nombre complexType , struct , // array o struct ( mapa hash ) all , // composici on XSD ( all , sequence , choice ) , // restricci on base ( namespace : nombre ) array (...) , // elementos del tipo array (...) // atributos del tipo ..... // tipo de array , si lo es );

9 de 23

NuSOAP: servidor SOAP (V)

Ejemplo de creacin del tipo alumno


< xsd:element name = " alumno " > < xsd:complexType > < xsd:sequence > < xsd:element maxOccurs = " 1 " minOccurs = " 1 " name = " nombre " type = " xsd:string " / > < xsd:element maxOccurs = " unbounded " minOccurs = " 0 " name = " telefono " type = " xsd:string " / > </ xsd:sequence > </ xsd:complexType > </ xsd:element >

10 de 23

NuSOAP: servidor SOAP (V)


Ejemplo de creacin del tipo alumno
$server - > wsdl - > addComplexType ( alumno , // nombre complexType , struct , // tipo asociativo all , // xsd : all , // sin restr . de namespace array ( nombre = > array ( name = > nombre , type = > xsd : string ) , telefono = > array ( name = > telefono , type = > xsd : string , minOccurs = > 1 , maxOccurs = > unbounded ) ) 10 ); de 23

NuSOAP: servidor SOAP (y VI)


Ejemplo de creacin del tipo alumnado (array de alumno)
$server - > wsdl - > addComplexType ( alumnado , complexType , array , , SOAP - ENC : Array , array () , array ( array ( ref = > SOAP - ENC : arrayType , wsdl : arrayType = > tns : alumno [] ) ), tns : alumno );
11 de 23

ndice

NuSOAP REST Conceptos Ejemplo comentado Conclusiones nales

12 de 23

REST: conceptos

Siglas de Representational State Transfer No es un estndar


Tesis doctoral de Roy Fielding, 2001 Que no cunda el pnico: la arquitectura cliente-servidor tampoco lo es Cada servicio REST est hecho al gusto

Una ruta (URI) equivale a un recurso Uso extensivo de los mtodos HTTP

13 de 23

REST: URI = recurso

No es algo tan raro: lo usamos cada da en la web Deniremos los recursos y las URIs a nuestro gusto Algunos ejemplos:
/alumnos: todos los alumnos /alumnos/4293845: alumno con DNI 4293845 /existencias/jamon/4/5: existencias del jamn de marca 4 en la estantera 5 de un almacn

14 de 23

REST: uso de los mtodos HTTP (I)

Cmo interacta el cliente con los recursos?

15 de 23

REST: uso de los mtodos HTTP (I)

Cmo interacta el cliente con los recursos? Con los mtodos que HTTP provee
GET POST PUT DELETE

15 de 23

REST: uso de los mtodos HTTP (y II)

Recomendaciones sobre el uso de los mtodos: GET POST PUT DELETE obtencin de un recurso creacin de nuevo recurso actualizacin de un recurso eliminacin de un recurso

Se recomienda que ante un POST el servicio devuelva la URL del recurso creado

16 de 23

REST: lenguaje usado

El desarrollador decide qu formato usan las peticiones y las respuestas del servicio (independientes) Las especicaciones de los formatos deben entregarse a los posibles clientes

17 de 23

Ejemplo: coleccin de pelculas

Cada pelcula tiene asociados unos atributos (ttulo, director, etc)

18 de 23

Ejemplo: coleccin de pelculas. Decisiones (I)

URL de los recursos:


http://servicio/peliculas: listado de las pelculas en la base de datos http://servicio/peliculas/peli : pelcula con identicador peli .
Ej.: http://servicio/peliculas/938456 es el recurso Pelcula Shrek 3

19 de 23

Ejemplo: coleccin de pelculas. Decisiones (II)


Acciones sobre http://servicio/pelculas y respuestas GET obtencin de listado de pelculas POST creacin de una nueva pelcula. Respuesta: URL de la nueva pelcula PUT DELETE Acciones sobre http://servicio/pelculas/peli y respuestas GET obtencin de datos de la pelcula POST PUT actualizacin de datos de la pelcula DELETE borrado de la pelcula

20 de 23

Ejemplo: coleccin de pelculas. Decisiones (y III)


Formato de las peticiones: parmetros sin ms. Sin XML (qu alivio). Ejemplo: POST /peliculas HTTP/1.1 titulo=Big%20Fish director=Tim%20Burton anyo=2003 ... Formato de las respuestas: XML. Cumplir cierto XSD que denamos. Ejemplo:
<? xml version = " 1.0 " ? > < pelicula > < titulo > Shrek 3 </ titulo > < director > Chris Miller </ director > ... </ pelicula >
21 de 23

ndice

NuSOAP REST Conclusiones nales

22 de 23

Por n!

Los servicios web no estn restringidos a su consumo desde la web


Un programa de consola, una aplicacin grca, un servicio LDAP... todos podran hacer uso de un servicio web

Espero no haberos aburrido demasiado Jorge, las pegatinas

23 de 23

Potrebbero piacerti anche