Your SlideShare is downloading. ×
Servicio y Consumo de Servicios REST en PHP
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Servicio y Consumo de Servicios REST en PHP

21,786
views

Published on

Transparencias que tratan cómo acceder a los datos de las peticiones bajo los distintos métodos HTTP y cómo servir distintos formatos de datos, además del consumo de servicios web. …

Transparencias que tratan cómo acceder a los datos de las peticiones bajo los distintos métodos HTTP y cómo servir distintos formatos de datos, además del consumo de servicios web.

Usado en el Curso de Extensión Universitaria "Desarrollo de aplicaciones web mediante servicios web y APIs abiertas" de la Universidad de Oviedo: http://directo.uniovi.es/postgrado/cabecera_ep.asp?Curso=2008&IdPrograma=5187

Published in: Education, Technology

2 Comments
15 Likes
Statistics
Notes
  • como se pueden descagar...o modificar...?
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • muy buen resumen sobre rest
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
21,786
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
2
Likes
15
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. REST en PHP David J. Brenes Martínez Desarrollador Servicios Web REST con PHP en Grupo Índigo Servir REST Lo Básico David J. Brenes Martínez Métodos HTTP Formatos de datos Desarrollador en Grupo Índigo Consumir Servicios REST Curso de Extensión Universitaria PHP y HTTP Desarrollo de aplicaciones web mediante servicios web y APIs abiertas Rest con CouchDB Rest con Twitter Universidad de Oviedo Extras OAuth 2009/07/20 Frameworks REST Conclusiones Créditos y Licencia
  • 2. ¿Qué es PHP? REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo Lenguaje interpretado en el Servidor Web Servir REST Lo Básico Su salida estándar es la Respuesta HTTP Métodos HTTP Formatos de datos ‘print’ o ‘echo’ escriben directamente en la respuesta Consumir Servicios De este modo se sirven páginas web REST PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 3. Devolviendo datos REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo Servir REST Mostrando datos por la respuesta HTTP Lo Básico Métodos HTTP echo "Hello World!!"; Formatos de datos print "Hello World!!"; Consumir Servicios REST PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 4. Devolviendo datos REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo Mostrando estructuras en la respuesta HTTP Servir REST $hello = array("hello", "world"); Lo Básico Métodos HTTP print_r($hello); Formatos de datos Consumir $hello = array("hello" => "world"); Servicios REST var_dump($hello); PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 5. Extensión Poster REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo Extensión para Firefox que realiza peticiones HTTP Servir REST Lo Básico Ideal para depurar servicios REST Métodos HTTP Formatos de datos https://addons.mozilla.org/en-US/ Consumir Servicios firefox/addon/2691 REST PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 6. Extensión Poster REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo URL del servicio web con sus parámetros Servir REST Lo Básico Content-type para post: Métodos HTTP Formatos de datos application/x-www-form-urlencoded Consumir Servicios ‘Content to Send’: Mismo formato que en la URL REST PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 7. Petición GET REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo Servir REST Es el método más habitual de trabajo Lo Básico Métodos HTTP Los parámetros se mandan en la URL Formatos de datos Consumir Los parámetros se recogen en la variable $_GET. Servicios REST PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 8. Petición GET REST en PHP David J. Brenes Martínez Desarrollador en Grupo http://url?param1=value1&param2=value2 Índigo Servir REST Lo Básico Accediendo a los parámetros GET Métodos HTTP Formatos de datos echo $_GET["param1"]; // => value1 Consumir Servicios // ... REST PHP y HTTP echo var_dump($_GET); // => array(2) { ["param1"]=> Rest con CouchDB Rest con Twitter string(6) "value1" ["param2"]=> string(6) "value2" } Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 9. Petición POST REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo Es otro método habitual de trabajo Servir REST Lo Básico Usado en formularios web Métodos HTTP Formatos de datos Los parámetros se mandan en el cuerpo de la petición Consumir Servicios Los parámetros se recogen en la variable $_POST. REST PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 10. Petición POST REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo Accediendo a los parámetros POST Servir REST echo $_POST["param1"]; // => value1 Lo Básico Métodos HTTP // ... Formatos de datos Consumir echo var_dump($_POST); // => array(2) { ["param1"]=> Servicios REST string(6) "value1" ["param2"]=> string(6) "value2" } PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 11. Petición PUT REST en PHP David J. Brenes Martínez Desarrollador en Grupo Método menos habitual de trabajo Índigo Los parámetros se mandan en el cuerpo de la petición Servir REST Lo Básico No hay variable $_PUT Métodos HTTP Formatos de datos Los parámetros se recogen de la entrada estandar Consumir Servicios (php://input) REST PHP y HTTP Tendremos que leer la entrada estandar y procesar los Rest con CouchDB Rest con Twitter datos Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 12. Petición PUT REST en PHP David J. Brenes Martínez Desarrollador en Grupo Accediendo a la petición PUT Índigo $putdata = fopen("php://input", "r"); Servir REST $put_data = ""; Lo Básico Métodos HTTP while ($data = fread($putdata, 1024)) $put_data .= $data; Formatos de datos Consumir fclose($putdata); Servicios REST PHP y HTTP Rest con CouchDB Tenemos en $putdata los datos enviados Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 13. Petición PUT REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo Procesando los datos de la petición PUT Servir REST Lo Básico parse_str($put_data); Métodos HTTP Formatos de datos Consumir Servicios parse_str convierte los datos del string en variables REST PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 14. Petición DELETE REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo Servir REST Método menos habitual de trabajo Lo Básico Métodos HTTP Los parámetros normalmente se mandan en la URL Formatos de datos Consumir No hay variable $_DELETE, se usa $_GET Servicios REST PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 15. Formatos soportados REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo Servir REST REST no impone un formato Lo Básico Métodos HTTP Con PHP podemos mandar lo que queramos Formatos de datos Consumir Hay funciones especiales para XML y JSON Servicios REST PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 16. HTML REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo Habitualmente se escribe con echo y print. Servir REST Lo Básico No suele ser necesaria ayuda extra para servir HTML Métodos HTTP Formatos de datos Bibliotecas: Tidy (http: Consumir Servicios //es.php.net/manual/en/book.tidy.php) REST PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 17. XML REST en PHP David J. Brenes Al igual que HTML, con echo y print. Martínez Desarrollador Existen bibliotecas de tratamiento de XML en Grupo Índigo Suelen ser más útiles para procesar XML que para generarlo. Servir REST Lo Básico Permiten generar un arbol XML y volcarlo Métodos HTTP Formatos de datos Bibliotecas: Consumir Servicios DOM: REST http://es.php.net/manual/en/book.dom.php PHP y HTTP Rest con CouchDB SimpleXML: http: Rest con Twitter //es.php.net/manual/en/book.simplexml.php Extras XSL: OAuth Frameworks REST http://es.php.net/manual/en/book.xsl.php Conclusiones Créditos y Licencia
  • 18. JSON REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo PHP5 ofrece soporte directo para JSON Servir REST json_encode: Codifica una variable en formato JSON Lo Básico json_decode: Genera una variable a partir de una Métodos HTTP Formatos de datos cadena JSON Consumir Servicios Referencia: http: REST //es.php.net/manual/en/book.json.php PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 19. Biblioteca cURL REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo Biblioteca para realizar peticiones HTTP Servir REST En PHP5 activa por defecto Lo Básico Métodos HTTP Permite indicar proxy, método HTTP. . . Formatos de datos Consumir http: Servicios REST //es.php.net/manual/en/book.curl.php PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 20. Realizando la conexión REST en PHP David J. Brenes Martínez Desarrollador en Grupo Conexión GET mediante cURL Índigo $conexion = curl_init(); Servir REST curl_setopt($conexion, CURLOPT_RETURNTRANSFER, Lo Básico Métodos HTTP TRUE); Formatos de datos curl_setopt($conexion, CURLOPT_HEADER, 0); Consumir Servicios curl_setopt($conexion, CURLOPT_URL, $url); REST PHP y HTTP $resultado = curl_exec($conexion); Rest con CouchDB Rest con Twitter curl_close($conexion); Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 21. Realizando la conexión REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo Servir REST Especificando proxy HTTP Lo Básico Métodos HTTP curl_setopt($conexion, CURLOPT_PROXY, Formatos de datos ’http://proxy.uniovi.es:8888’); Consumir Servicios REST PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 22. Realizando la conexión REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo Servir REST Eligiendo método HTTP Lo Básico Métodos HTTP curl_setopt($conexion, CURLOPT_CUSTOMREQUEST, Formatos de datos $method); Consumir Servicios REST PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 23. Realizando la conexión REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo Servir REST Indicando los datos del cuerpo de la petición Lo Básico Métodos HTTP Formatos de datos curl_setopt($conexion, CURLOPT_POSTFIELDS, $data); Consumir Servicios REST PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 24. Sobre CouchDB REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo Servir REST Base de Datos Orientada a Documentos Lo Básico Métodos HTTP Formatos de datos Implementa una API RESTful Consumir Servicios REST PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 25. Sobre la API de CouchDB REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo Servir REST API basada en REST Lo Básico Métodos HTTP Soporta formato JSON para el intercambio de datos en Formatos de datos las peticiones Consumir Servicios REST PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 26. Sobre Twitter REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo Famoso servicio de microblogging Servir REST API muy utilizada. Lo Básico Métodos HTTP Formatos de datos Más peticiones por API que en la Web Consumir Decenas de clientes para muchas plataformas Servicios (Nintendo DS) REST PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 27. Sobre la API de Twitter REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo API basada en REST Soporta formatos XML y JSON para las peticiones Servir REST Lo Básico Exige autenticación para algunos métodos. Métodos HTTP Formatos de datos Tiene limitación de peticiones a realizar Consumir Servicios REST PHP y HTTP http://apiwiki.twitter.com/ Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 28. Problemática REST en PHP David J. Brenes Martínez Desarrollador en Grupo Algunas APIs requieren autenticación Índigo Las aplicaciones deben conocer los detalles de Servir REST autenticación Lo Básico Métodos HTTP Formatos de datos ¿A quién confias tus claves? Consumir Servicios REST http://www.codinghorror.com/blog/archives/ PHP y HTTP Rest con CouchDB 001072.html Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 29. Problemática REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo Se requiere un método más seguro para las APIs Las aplicaciones NO deben conocer los detalles de Servir REST Lo Básico autenticación Métodos HTTP Formatos de datos ¿Cómo se autentican? Consumir Servicios REST OAuth: http://oauth.net/ PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 30. Vocabulario REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo Servicio: La aplicación que provee el servicio Servir REST Consumidor: La aplicación que desea acceder a los Lo Básico Métodos HTTP recursos protegidos. Formatos de datos Recursos protegidos: Aquella información en el Consumir Servicios servicio que requiere autenticación por parte del REST PHP y HTTP usuario. Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 31. Paso 1: Dar de alta el consumidor REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo El consumidor se registra en el servicio. Ejemplo: Servir REST Lo Básico https://twitter.com/oauth_clients Métodos HTTP Formatos de datos El consumidor obtiene una clave y una palabra secreta Consumir Servicios para identificarse REST PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 32. Paso 2: El consumidor solicita acceso a un recurso REST en PHP David J. Brenes Martínez Desarrollador El consumidor solicita un token de acceso en Grupo Índigo Este token identifica el acceso de una aplicación a los Servir REST recursos protegidos de un usuario Lo Básico Métodos HTTP Se dirige al usuario a la página del servicio para que Formatos de datos confirme que da acceso al consumidor Consumir Servicios REST La página del servicio solicitará al usuario que se PHP y HTTP autentique y que verifique el acceso Rest con CouchDB Rest con Twitter Si el usuario lo verifica, el token será aprobado Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 33. Paso 3: El consumidor recibe acceso a un recurso REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo El usuario es enviado a la página del consumidor de Servir REST Lo Básico nuevo Métodos HTTP Formatos de datos El consumidor dispone ahora de un token válido para Consumir Servicios obtener los recursos protegidos REST PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 34. Conclusión REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo El usuario no ha tenido que dar sus credenciales de Servir REST Lo Básico acceso en sitios de terceros (consumidores) Métodos HTTP Formatos de datos El usuario sabe para qué ha dado permiso al Consumir Servicios consumidor REST PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 35. Implementaciones en PHP REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo Servir REST OAuth-PHP: Lo Básico Métodos HTTP http://code.google.com/p/oauth-php/ Formatos de datos Biblioteca para implementar consumidores y servicios Consumir Servicios REST PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 36. Pero... ¿Hay frameworks? REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo Servir REST REST no detalla protocolos Lo Básico Métodos HTTP REST no describe formatos de intercambio de datos Formatos de datos Consumir ¿Cómo puede haber frameworks? Servicios REST PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 37. Con más razón REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo Las tareas REST son siempre las mismas Servir REST No son necesarias descripciones de servicios, ya que Lo Básico Métodos HTTP se permiten tan solo 4 operaciones Formatos de datos Consumir Las descripciones son necesarias para los recursos Servicios REST soportados PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 38. Tonic REST en PHP David J. Brenes Martínez Desarrollador http://tonic.sourceforge.net/ en Grupo Índigo Proceso de la Request e invocación de código para Servir REST Lo Básico cada método en cada recurso Métodos HTTP Formatos de datos Permite usar distintos adaptadores para enlazar el Consumir framework con distintas fuentes de datos Servicios REST Ficheros locales PHP y HTTP Rest con CouchDB Bases de Datos Rest con Twitter Otros servicios Web Extras OAuth Uso de Smarty para la representación de recursos Frameworks REST Conclusiones Créditos y Licencia
  • 39. Tonic REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo Servir REST Framework sencillo Lo Básico Métodos HTTP Formatos de datos Buena documentación y ejemplos Consumir Servicios REST PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 40. PHPRestSQL REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo http://phprestsql.sourceforge.net/ Servir REST Lo Básico Métodos HTTP Conector entre Base de Datos y Servicios Web Formatos de datos Consumir Necesita configurar la base de datos a la que se debe Servicios REST acceder PHP y HTTP Rest con CouchDB Realiza todo el CRUD para la Base de Datos Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 41. PHPRestSQL REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo Servir REST Permite intercambiar datos en XML, HTML y texto Lo Básico Métodos HTTP plano Formatos de datos Facilmente ampliable a otros formatos (JSON) Consumir Servicios REST PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 42. Servir Servicios REST REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo No más complicado que realizar una página web Servir REST Lo Básico Complicación por falta de soporte para algunos Métodos HTTP Formatos de datos métodos (PUT) Consumir Servicios Soporte para diversos formatos REST PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 43. Consumir Servicios REST REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo Servir REST Consumo sencillo (peticiones HTTP) Lo Básico Métodos HTTP Procesado de datos no automático Formatos de datos Consumir Falta de descripción => Sobrecarga de documentación Servicios REST PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 44. ¿Otros? REST en PHP David J. Brenes Martínez Desarrollador en Grupo Índigo Servir REST Problemas de seguridad en la autorización Lo Básico Métodos HTTP Formatos de datos Automatización de operaciones Consumir Servicios REST PHP y HTTP Rest con CouchDB Rest con Twitter Extras OAuth Frameworks REST Conclusiones Créditos y Licencia
  • 45. Licencia REST en PHP David J. Brenes Martínez Desarrollador Estas transparencias se publican bajo licencia Creative en Grupo Índigo Commons y se pueden redistribuir o modificar bajo las siguientes condiciones: Servir REST Lo Básico Se dé reconocimiento al autor de estas transparencias. Métodos HTTP Formatos de datos No se use con propósitos comerciales. Consumir Servicios REST Se distribuya con la misma licencia. PHP y HTTP Rest con CouchDB Texto de la licencia: http: Rest con Twitter //creativecommons.org/licenses/by-nc-sa/3.0/ Extras OAuth Frameworks REST Conclusiones Créditos y Licencia

×