Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Guzzle - Software Freedom Day Puebla

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

Guzzle - Software Freedom Day Puebla

Taller de Guzzle impartido en el Software Freedom Day en el Insituto Tecnológico de Puebla

Avatar for Comunidad PHP Puebla

Comunidad PHP Puebla

September 23, 2013

More Decks by Comunidad PHP Puebla

Other Decks in Programming

Transcript

  1. Septiembre de 2013 Software Freedom Day 2 ¿Quiénes somos? •

    La comunidad PHP Puebla está formada por un grupo entusiasta de voluntarios con el objetivo de promover el uso de buenas prácticas entre los desarrolladores PHP de Puebla • Nuestras principales actividades consisten en asistir a eventos sobre desarrollo Web impartiendo talleres y conferencias. • También organizamos el PHP Day Puebla, un evento anual con conferencias y talleres gratuitos.
  2. Septiembre de 2013 Software Freedom Day 3 Contenido 1)¿Qué es

    Guzzle? 2)Instalación 3)Conceptos básicos de HTTP 4)Creación de clientes HTTP 5)Objetos Request 6)Objetos Response 7)Redirects 8)Sistema de plugins 9)Clientes de Web services
  3. Septiembre de 2013 Software Freedom Day 4 ¿Qué es Guzzle?

    • Guzzle es un cliente HTTP y un framework PHP para crear clientes de servicios Web. • Guzzle facilita el envío de solicitudes HTTP y elimina la redundancia de crear clientes de servicios Web.
  4. Septiembre de 2013 Software Freedom Day 5 Instalación • La

    forma preferida de instalar Guzzle es usando Composer • # Instala Composer curl -sS https://getcomposer.org/installer | php # Agrega Guzzle como dependencia php composer.phar require guzzle/guzzle:v3.7.3 • Instalación de Composer en Windows – https://getcomposer.org/Composer-Setup.exe
  5. Septiembre de 2013 Software Freedom Day 6 Instalación • Para

    empezar a usar Guzzle solo necesitas usar el autoloader de Composer require 'vendor/autoload.php';
  6. Septiembre de 2013 Software Freedom Day 7 Primer ejemplo •

    <?php • require 'vendor/autoload.php'; • • use \Guzzle\Http\Client; • • $client = new Client('http://www.comunidadphppuebla.com'); • $request = $client->get('/comunidad'); • • echo $request->getUrl(); • • $response = $request->send(); • • echo $response->getBody(); •
  7. Septiembre de 2013 Software Freedom Day 8 Conceptos básicos de

    HTTP • Cada transacción HTTP consiste de una solicitud y una respuesta. – URL – Verbo HTTP – Headers – Status codes – Body
  8. Septiembre de 2013 Software Freedom Day 9 Request y Response

    • Cada que haces clic, tu navegador hace una solicitud a un servidor (request), el servidor la procesa y manda de vuelta una respuesta (response) • En todos los casos hay un cliente que hace una solicitud y un servidor que envía una respuesta
  9. Septiembre de 2013 Software Freedom Day 10 Clientes y servidores

    • Cuando se trata de APIs construimos el servidor con PHP, pero también podemos consumir la API con PHP (crear un cliente) • Tanto el cliente como el servidor van a usar solicitudes y respuestas.
  10. Septiembre de 2013 Software Freedom Day 11 Verbos HTTP •

    Los verbos HTTP nos sirven para decirle al servidor que tipo de operación queremos realizar • GET. Cuando usamos el verbo GET la solicitud no produce ningún cambio en el servidor • POST. El verbo POST si produce cambios en el servidor.
  11. Septiembre de 2013 Software Freedom Day 12 Otros verbos HTTP

    • PUT. El verbo PUT se utiliza comúnmente para indicar que se está haciendo una actualización a un recurso existente en un servidor. • DELETE. El verbo DELETE indica que eliminaremos un recurso en un servidor. • OPTIONS. Indica que otros verbos son permitidos para un recurso dado • HEAD. Es identico a GET solo que no envía el cuerpo de la solicitud
  12. Septiembre de 2013 Software Freedom Day 13 Ejemplo verbos HTTP

    con Slim • • Instalar Slim composer.phar require slim/slim:2.3.1 • .htaccess RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [QSA,L]
  13. Septiembre de 2013 Software Freedom Day 14 Headers • Tanto

    las solicitudes como las respuestas están formadas por headers (encabezados) y un body (cuerpo). • Si imaginamos una carta con una tarjeta de felicitación, los headers serían la dirección y el timbre postal.
  14. Septiembre de 2013 Software Freedom Day 15 Headers más comunes

    • User-Agent. Contiene el nombre del navegador, dispositivo o programa que realiza una solicitud. • Content-Type. Describe cual es el formato que tiene el body, por ejemplo HTML, JSON, texto plano, etc. • Accept. Indica que tipo de contenido es aceptable.
  15. Septiembre de 2013 Software Freedom Day 16 Headers más comunes

    • Header Accept de Chrome Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 • Indica las siguientes preferencias text/html application/xhtml+xml application/xml */* (cualquier otro formato) • El valor de q indica que tan importante es una opción el valor default es 1.
  16. Septiembre de 2013 Software Freedom Day 17 Ejemplo Content Negotiation

    • Instalar la librería Negotiation composer.phar require willdurand/negotiation:1.0.1 • Instalar Twig composer.phar require twig/twig:v1.13.2 • Instalar Faker composer.phar require fzaninotto/faker:v1.2.0
  17. Septiembre de 2013 Software Freedom Day 18 Headers de Autorización

    • Authorization: La forma más simple de proteger una página es usar autenticación básica HTTP, para esto simplemente mandamos nuestro usuario y contraseña en base64 con el formato usuario:contraseña Authorization: Basic usuario:contraseña • Ejemplo con Slim.
  18. Septiembre de 2013 Software Freedom Day 19 REST • REST

    (REpresentational State Transfer) • En REST se usan verbos HTTP para crear un CRUD (Create, Read, Update, Delete) básico con los verbos POST, GET, PUT, y DELETE • Estas operaciones se realizan sobre recursos • Los servicios REST transfieren representaciones de recursos (JSON, XML, XHTML).
  19. Septiembre de 2013 Software Freedom Day 20 URLs REST •

    Ejemplos de URLs CRUD en un servicio REST GET http://comunidadphppuebla/api/users/1 POST http://comunidadphppuebla/api/users PUT http://comunidadphppuebla/api/users/1 DELETE http://comunidadphppuebla/api/users/1
  20. Septiembre de 2013 Software Freedom Day 21 CRUD ejemplo con

    Slim • Creación de CRUD RESTful con Slim
  21. Septiembre de 2013 Software Freedom Day 22 Ejemplos de Requests

    Guzzle • GET requests • HEAD requests • POST requests • PUT requests • DELETE requests • Manejo de query strings • Manejo de errores
  22. Septiembre de 2013 Software Freedom Day 23 Ejemplos de Response

    Guzzle • Response status • Response headers • Response body – JSON, XML
  23. Septiembre de 2013 Software Freedom Day 24 Manejo de plugins

    • HTTP Cache plugin – composer.phar require doctrine/cache:v1.1 • Log Plugin – composer.phar require monolog/molog:1.6.0 • Mock Plugin
  24. Septiembre de 2013 Software Freedom Day 25 Creación de un

    cliente de web Service • Con una factory • Usando el service builder • Ejecución de comandos • Comandos de operación • Parámetros default
  25. Septiembre de 2013 Software Freedom Day 26 Service Builders •

    Uso y creación • Manejo de clientes • Plugins globales • Service descriptions
  26. Septiembre de 2013 Software Freedom Day 29 Documentación • Composer

    • http://getcomposer.org/doc/ • Guzzle • http://guzzlephp.org/docs.html • Slim • http://docs.slimframework.com/ • Negotiate • https://github.com/willdurand/Negotiation • Twig • http://twig.sensiolabs.org/documentation • Faker • https://github.com/fzaninotto/Faker • Doctrine Cache • http://docs.doctrine-project.org/en/latest/reference/caching.html • Monolog • https://github.com/Seldaek/monolog
  27. Septiembre de 2013 Software Freedom Day 30 ¡Gracias! • ¿Cómo

    participar? – Como voluntario, ayudando a organizar y participando en los eventos de la comunidad – Como promotor (a través de redes sociales, sitios web o algún otro medio de difusión) – Como patrocinador de conferencias y talleres gratuitos, ya sea de forma económica o en especie
  28. Septiembre de 2013 Software Freedom Day 31 Redes sociales •

    http://www.comunidadphppuebla.com • https://twitter.com/ComPHPPuebla • https://github.com/ComPHPPuebla • https://packagist.org/users/ComPHPPuebla/ • https://speakerdeck.com/comphppuebla