Laravel nos permite entre otras cosas el desarrollo de API’s que puedan ser consumidas desde otro recurso o software externo como aplicaciones web de terceros, aplicaciones móviles, etc. pero ocasionalmente y en sentido contrario, es necesitamos realizar peticiones a una o varias API’s.
En PHP se pueden hacer peticiones web utilizando por ejemplo CURL que es «Una librería que nos permite conectarnos y comunicarnos con diferentes tipos de servidores usando diferentes tipos de protocolos como http, https, ftp, entre otras«.
Citando un ejemplo muy simple de la documentación oficial de esta librería podemos ver lo siguiente
// Conectarse a un cliente web $ch = curl_init("http://www.example.com/"); // Abrir un archivo $fp = fopen("example_homepage.txt", "w");
Guzzle es un paquete de PHP que permite, de una forma muy fácil, realizar todas estas peticiones HTTP para integrar servicios web de terceros dentro de nuestras aplicaciones.
Instalación
Este paquete está disponible a través de composer y puede ser instalado ejecutando el siguiente comando desde el directorio raíz del proyecto:
$ composer require guzzlehttp/guzzle
Primeros pasos
Lo primero que debemos hacer es crear o instanciar un cliente de la siguiente manera:
// Nuevo cliente con un url base $client = new GuzzleHttp\Client(['base_uri' => 'https://myapp.com/api/']);
En este caso las peticiones se realizarán a la url específica, ya que hemos definido un url base no se podrán hacer peticiones por encima de este directorio, por ejemplo a https://myapp.com.
Tipos de peticiones
Con Guzzle podemos crear, entre otras, peticiones POST, PUT, DELETE, GET… esto lo hacemos a través de los métodos encadenados que nos proporciona el paquete, veamos:
$response = $client->get('https://myapp.com/get'); $response = $client->delete('https://myapp.com/delete'); $response = $client->post('https://myapp.com/post'); $response = $client->put('https://myapp.com/put');
Envió de parámetros
Cuando hacemos peticiones de tipo POST, por ejemplo, generalmente queremos enviar algunos parámetros como es el caso de un formulario de registro, esto lo podemos hacer de la siguiente manera.
$response = $client->post("http://myapp.com/user", [ // un array con la data de los headers como tipo de peticion, etc. 'headers' => ['foo' => 'bar'], // array de datos del formulario 'body' => [ 'name' => 'jeff', 'emai' => '[email protected]', 'pass' => 'secret' ] ]);
El resultado obtenido será almacenado en la variable $response.
Esto es tan solo una pequeña muestra de lo que podemos hacer con Guzzle, además tenemos opciones un poco más complejas como uso de certificados ssl, proxy, petición de streaming, y algunos features extra.
Guzzle es en realidad un paquete muy versátil, sin duda es una solución muy efectiva, como mencionaba anteriormente, cuando queremos conectarnos o integrar nuestra aplicación con servicios de terceros. Además este paquete está muy bien documentado en su sitio oficial y es un proyecto Open Source que está disponible en GitHub y con mejoras día a día gracias al aporte de la comunidad.
Repositorio en GitHub: https://github.com/guzzle/guzzle
Documentación: http://docs.guzzlephp.org/en/latest/index.html
Bien sea que hayas usado con anterioridad o no este plugin, te recomendamos que lo pruebes, examines cada una de sus funciones y lo implementes en tus proyectos, de seguro te traerá algunas ventajas que no esperabas.
Déjanos saber tu opinión sobre ésta y todas nuestras publicaciones en la sección de comentarios, solo con tu ayuda podemos mejorar este portal para seguir brindándote material de calidad, nos veremos en una próxima publicación.
Material recomendado
Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.
Lección anterior URLs amigables con Eloquent-Sluggable en Laravel Lección siguiente GitGutter para Sublime Text