DEV Community

Nahuel Segovia
Nahuel Segovia

Posted on

7 4

Hacer peticiones HTTP con Laravel y Guzzle

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

Top comments (0)

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up