DEV Community

loading...

Hacer peticiones HTTP con Laravel y Guzzle

nahuelsegovia profile image Nahuel Segovia ・1 min read

Hola, en esta oportunidad les vengo a mostrar como hacer peticiones HTTP con Guzzle en Laravel.

Lo primero que tenemos que hacer es instalar Guzzle en nuestro proyecto:

composer require guzzlehttp/guzzle
Enter fullscreen mode Exit fullscreen mode

Una vez instalado podemos usarlo en cualquier parte con la clase http que usa Guzzle, esto importandola con la instruccione use:

use Illuminate\Support\Facades\Http;
Enter fullscreen mode Exit fullscreen mode

En este caso yo lo estoy utilizando para realizar peticiones en el mismo proyecto, y el resultado de la petición poder usarlo en el test

<?php

namespace Tests\Feature;

use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Tests\TestCase;
use App\Models\Product;
use Illuminate\Support\Facades\Http;

class appServicecsProductServiceTest extends TestCase
{
    /**
     * A basic feature test example.
     *
     * @return void
     */
    public function test_create()
    {   
        $product = Http::post('http://localhost:8000/api/admin/productos', 
            ['product_title' => 'producto_de_prueba',
            'product_price' => '200000',
            'product_content' => 'Este producto es importado de italia',
            'product_photo' => 'imagen.png',]
        );

       $this->assertEquals($product->body(), 'Product has been created successfully');
    }
}
Enter fullscreen mode Exit fullscreen mode

Estos son los distintos métodos que nos van a permitir acceder al estado de la petición:

$product->body() : string;
$product->json() : array|mixed;
$product->collect() : Illuminate\Support\Collection;
$product->status() : int;
$product->ok() : bool;
$product->successful() : bool;
$product->failed() : bool;
$product->serverError() : bool;
$product->clientError() : bool;
$product->header($header) : string;
$product->headers() : array;
Enter fullscreen mode Exit fullscreen mode

Y como el body de la petición me devuelve:

Product has been created successfully
Enter fullscreen mode Exit fullscreen mode

el test pasa:

Alt Text

Para mas información pueden visitar la documentación de Laravel: https://laravel.com/docs/8.x/http-client

Discussion (0)

Forem Open with the Forem app