Presentación del 2º Encuentro - Biblioteca Central de la Universidad

Anuncio
© DCM-DCIC-UNS
1
© DCM-DCIC-UNS
1
Depto de Cs e Ing. de la Computación
Universidad Nacional del Sur
XML-RPC - elementos
XML-RPC requiere que los datos pasados entre las partes estén en un elemento
XML denominado value
<value> </value>
El contenido identifica el tipo de dato
<value><int>5</int></value>
<value><i4>5</i4></value>
<value><double>2.34334</double></value>
<value><boolean>0</boolean></value>
<value><string>Hola!</string></value>
<value><dateTime.iso8601>
20110503T09:15:00
</dateTime.iso8601></value>
<value><base64>Hola!</base64></value>
10
© Diego C. Martínez - DCIC-UNS
XML-RPC - elementos
Estructuras más complejas (como arreglos asociativos) se representan en XML-RPC
con el tipo de dato structure, una colección de valores nombrados.
<value>
<struct>
<member>
<name>..</name>
<value>..</value>
</member>
...
</struct>
</value>
$a = array(
”nombre”=>”Juan”,
”deuda”=>”23.5”
);
© Diego C. Martínez - DCIC-UNS
© DCM-DCIC-UNS
Puede haber varios
elementos de tipo member
<value>
<struct>
<member>
<name>nombre</name>
<value>
<string>Juan</string>
</value>
</member>
<member>
<name>deuda</name>
<value>
<double>23.5</double>
</value>
</member>
</struct>
</value>
12
1
Ingeniería de Aplicaciones Web
Dr. Diego C. Martínez
Depto de Cs e Ing. de la Computación
Universidad Nacional del Sur
XML-RPC Requests
XML-RPC Requests
Los requerimientos y respuestas también tienen un formato XML predefinido.
getPeliculas( año estreno , nombre del actor , incluir descripcion );
getPeliculas(80,”Robert De Niro”,true);
Estructura del XML-RPC Request:
<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>nombre del método</methodName>
<params>
<param>
parametro1
Puede no haber
</param>
<param>
parámetros y se omite el
parametro2
elemento params
</param>
<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>getPeliculas</methodName>
<params>
<param>
<value><int>80</int></value>
</param>
<param>
<value><string>Robert de Niro</string></value>
</param>
<param>
<value><boolean>1</boolean></value>
</param>
</params>
</methodCall>
...
</params>
</methodCall>
El orden de los parámetros es importante.
El tipo de los parámetros es importante si lo es para el receptor.
PHP es loosely typed
© Diego C. Martínez - DCIC-UNS
13
XML-RPC Response
© Diego C. Martínez - DCIC-UNS
14
XML-RPC Response
El formato de una respuesta XML-RPC también es fijo y predefinido
Estructura del mensaje de error XML-RPC
Estructura del XML-RPC response:
<?xml version="1.0"?>
<methodResponse>
<fault>
<value>
<struct>
<member>
<name>faultCode</name>
<value><int>55</int></value>
</member>
<member>
<name>faultString</name>
<value><string>Mensaje Error</string></value>
</member>
</struct>
</value>
</fault>
</methodResponse>
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value> valor del resultado </value>
</param>
</params>
</methodResponse>
<?xml version="1.0"?>
<methodResponse>
<params/>
</methodResponse>
© Diego C. Martínez - DCIC-UNS
© DCM-DCIC-UNS
15
© Diego C. Martínez - DCIC-UNS
16
1
Ingeniería de Aplicaciones Web
Dr. Diego C. Martínez
Depto de Cs e Ing. de la Computación
Universidad Nacional del Sur
XML-RPC en PHP
XML-RPC en PHP
PHP ofrece librerías para utilizar XML-RPC con relativa facilidad.
Algunos objetos de la extensión PEAR:
Algunos métodos de la extensión xmlrpc:
$val = new XML_RPC_Value(datos)
Crea un objeto que contiene valores XML_RPC
xmlrpc_encode($array)
Codifica un arreglo de parámetros en el elemento params.
$val = new XML_RPC_Message($string, $array)
Crea un objeto mensaje. Recibe el nombre del método y los parámetros (un
arreglo de objetos XML_RPC_Value)
xmlrpc_decode($xml)
Decodifica un elemento params en datos de tipos nativos de PHP
$val = new XML_RPC_Client(path, server , port , proxy ...)
Crea un objeto cliente de un servicio XML-RPC. Es configurado con el servidor
remoto y se encarga de toda la comunicación :)
Posee un método send para enviar un XML_RPC_Message
xmlrpc_encode_request($metodo,$array)
Genera un request en XML. Se indica el método remoto y los parámetros
xmlrpc_decode_request($xml,$metodo)
Decodifica un mensaje de respuesta XML-RPC en datos de tipos nativos de PHP
y devuelve en $metodo el nombre del método invocado.
XML_RPC_Response
Los objetos que devuelve la operación send de XML_RPC_Client son de tipo
XML_RPC_Response.
xmlrpc_is_fault($datos)
Devuelve verdadero si la respuesta decodificada es un error del servidor
© Diego C. Martínez - DCIC-UNS
17
REST
18
© Diego C. Martínez - DCIC-UNS
REST
REST significa Representational State Transfer.
No es un estándar como los anteriores, sino una abstracción de elementos de una
arquitectura dentro de un sistema hipermedial distribuido.
REST ve el mundo como una colección de recursos.
Los recursos se identifican por medio de URI o URL:
http://cs.uns.edu.ar/materias/rpa
Básicamente, traslada la configuración de un request, a las tecnologías ya provistas
por la web.
En este caso, la URL retorna la representación de la materia rpa.
Esta representación posee vínculos a otras representaciones (links)
El uso de REST implica el uso de las siguientes tecnologías:
Una implementación REST concreta
● usa los métodos HTTP explícitamente
El principio básico de REST vincula los métodos HTTP con CRUD.
● carece de estado (stateless)
Toda la información necesaria para la respuesta está incluida en los mensajes.
● expone URL con formato de estructura de directorios
Debe ser intuitivo y fácil de adivinar.
● transfiere XML (o JSON)
Un estándar de estructurado de datos simple y fácil de procesar
XML
El formato elegido para la transferencia de los recursos solicitados
HTTP
El protocolo ofrece métodos que se utilizan para definir las acciones a
realizar: GET, HEAD, POST, PUT y DELETE.
URI
El identificador del recurso que representa el servicio wev
MIME type
El tipo MIME será text/xml
© Diego C. Martínez - DCIC-UNS
© DCM-DCIC-UNS
19
© Diego C. Martínez - DCIC-UNS
20
1
Ingeniería de Aplicaciones Web
Dr. Diego C. Martínez
Depto de Cs e Ing. de la Computación
Universidad Nacional del Sur
REST – mensajes HTTP
REST – URLs
REST asigna un rol especial a los mensajes HTTP, consistente con su uso web.
http://www.autopartes.com/partes
GET
Recupera la representación de un recurso
Retrieve
HEAD
Recupera metadatos de la representación de un recurso
Retrieve
POST
Estrictamente, crea un recurso.
Se usa también para actualizar un recurso o borrarlo
<?xml version="1.0"?>
<p:partes xmlns:p="http://www...." xmlns:xlink="http://...">
<p:autoparte id="ABC1" xlink:href="http://www.autopartes.com/partes/ABC1"/>
<p:autoparte id="DEF2" xlink:href="http://www.autopartes.com/partes/DEF2"/>
<p:autoparte id="GEW3" xlink:href="http://www.autopartes.com/partes/GEW3"/>
<p:autoparte id="KLM1" xlink:href="http://www.autopartes.com/partes/KLM1"/>
</p:Parts>
Create
PUT
Actualiza un recurso.
Usualmente reemplazado por el método POST
Update
DELETE
Elimina un recurso.
Usualmente reemplazado por el método POST
Delete
http://www.autopartes.com/partes/DEF2
© Diego C. Martínez - DCIC-UNS
<?xml version="1.0"?>
<p:partes xmlns:p="http://www...." xmlns:xlink="http://...">
<p:autoparte>
<p:id>DEF2</p:id>
<p:desc>paragolpe delantero</p:desc>
<p:auto>Fiat 600</p:auto>
<p:stock>Fiat 600</p:stock>
</p:autoparte>
</p:Parts>
21
REST - URLs
●
●
●
●
●
22
JSON
Algunas guías generales para la estructuración de las URLs
●
Debería ofrecerse también el
DTD o XSD de la respuesta
© Diego C. Martínez - DCIC-UNS
En general, el formato de transmisión de datos en servicios web es XML
Pensar en la URL como una interfaz auto-documentada.
Mantener una estructura jerárquica razonable y descriptiva
Ocultar la tecnología de scripting del lado servidor (.jsp,.asp,.php, etc)
Utilizar si es posible, URL-rewriting.
Utilizar siempre letras minúsculas
Es una convención general y evita confusiones.
Sustituir espacios por guiones
Hace legible el URL y evita encodings que serían obligatorios
Evitar, en lo posible, los query strings.
La excesiva parametrización ofusca el URL.
Puede utilizarse también URL-rewriting
Reemplazar el mensaje 404 por un recurso por default
Es más general y conduce a un procesamiento uniforme del lado cliente
Recientemente ha habido una tendencia a utilizar formatos más simples y más
directos de procesar por JavaScript como tecnología del lado cliente
JSON = JavaScript Object Notation
JSON es un subconjunto de la notación object literal.
La Notación Literal de Objetos permite describir en forma simple y directa una
estructura de datos compleja, principalmente objetos.
var empleado={
nombre:'Homero',
apellido:'Simpson',
nombrecompleto:function(){
return this.nombre+' '+this.apellido;
}
}
© Diego C. Martínez - DCIC-UNS
© DCM-DCIC-UNS
23
© Diego C. Martínez - DCIC-UNS
24
1
Ingeniería de Aplicaciones Web
Dr. Diego C. Martínez
Depto de Cs e Ing. de la Computación
Universidad Nacional del Sur
JSON
La idea es representar la información con JSON, en lugar de XML:
<albums>
<album>
<titulo>
Master of Puppets
</titulo>
<artista>
Metallica
</artista>
</album>
<album>
<titulo>
The Division Bell
</titulo>
<artista>
Pink Floyd
</artista>
</album>
<albums>
{
'album':
[
{
'titulo'
'artist'
},
{
'titulo'
'artist'
]
: 'Master of Puppets',
: 'Metallica',
: 'The Division Bell',
: 'Pink Floyd',
}
La principal ventaja es que al ser un formato de
datos propio de JavaScript, es fácil interpretarlo.
No hace falta parsing como en XML.
© Diego C. Martínez - DCIC-UNS
© DCM-DCIC-UNS
25
1
Descargar