Para poder consumir una api de un tercero necesitaremos de un cliente, el cliente que usaremos es llamado guzzlehttp.
Configuración
Entonces para poder integrar a este cliente, instalaremos la dependecia dentro de nuestro proyecto.
composer require guzzlehttp/guzzle
Ahora para poder usar a este paquete sólo tenemos que importar a nuestra clase usando.
use GuzzleHttp\Client;
Con esto ya podremos crear una intancia de la clase client y comenzar a realizar peticiones. Pero para evitar crear instancias dentro de nuestro controladores, usaremos a el container de laravel para poder hacer inyección de dependecias en nuestro controladores, entonces lo que haremos será modificar al archivo AppServiceProvider que se encuentra en la carpeta app/Providers .
Dentro del método registre haremos el registro de nuestra clase, lo primero que haremos será importar a nuestro clase cliente al incio de nuestro archivo.
use GuzzleHttp\Client;
Algo que también podemos hacer es definir una variable de entorno dentro de l archivo .env y .env-example, que contenga el endpoint de la api.
API_ENDPOINT=https://jsonplaceholder.typicode.com
Ahora dentro del método register en el archivo AppServiceProvider vamos a proceder a registar a nuestro objecto.
Lo primero que haremos será obtener el valor de nuestra variable de entorno, para ello podemos apoyarnos del helper env.
$baseUrl = env('API_ENDPOINT');
Y como siguente paso, procederemos a registar a nuestro objecto(Usando a un objeto singleton).
$this->app->singleton(Client::class, function($app) use ($baseUrl) {
return new Client(['base_uri' => $baseUrl]);
});
Una vez realizado este paso, ya podremos hacer inyección de dependecias de este objeto dentro de nuestro controladores.
Por ejemplo vamos a la ruta raiz dentro del archivo web.php importamos a nuestro cliente.
use GuzzleHttp\Client;
Y dentro de la función agregamos como parametro a nuestro cliente.
Route::get('/', function (GuzzleHttp\Client $client)
Ahora obtengamos a los post de nuestra api.
$response = $client->request('GET', "posts");
Hacemos un parse del resultado a json usando json_decode.
$data = json_decode($response->getBody());
Si ahora hacemos un.
dd($data);
Y si vamos al navegador veremos a todos nuestros posts.
Métodos
Ahora veremos los métodos más utiles de esta libreria.
El crud completo.
$client->request('GET', '/posts');
$client->request('POST', '/posts', ['title' => 'foo']);
$client->request('PUT', '/posts/:id', ['title' => 'bar']);
$client->request('DELETE', '/posts/:id');
Ahora bien si queremos obtener el código de estatus podemos usar al método.
$response = $client->request('GET', "posts");
$response->getStatusCode();
Y para obtener el resultado que nos devuele la petición usaremos.
$response = $client->request('GET', "posts");
$response->getBody();
Bootcamp Ciencia de Datos
12 semanas de formación intensiva en los conocimientos, fundamentos, y herramientas que necesitas para ser científico de datos