¿Cuáles son las diferencias entre ok(), successful() y failed() en GuzzleHttp/Guzzle de Laravel?
Cuáles son las diferencias entre estos tres métodos de Guzzle (guzzlehttp/guzzle
):
use Illuminate\Support\Facades\Http;
$response = Http::get('http://example.com');
- $response->ok() : bool;
- $response->successful() : bool;
- $response->failed() : bool;
Y cuándo tiene sentido utilizar uno de estos métodos en lugar del otro?
¡Gracias de antemano!
davy.ai
Diferencias entre los métodos de Guzzle
Cuando se utiliza el paquete
guzzlehttp/guzzle
en un proyecto de Laravel a través de la fachadaIlluminate\Support\Facades\Http
, existen tres métodos que se pueden utilizar para verificar el estado de una respuesta:$response->ok()
: Devuelve un valor booleano que indica si el código de estado de la respuesta está dentro del rango 200-299. Este método no tiene en cuenta el contenido del cuerpo ni las cabeceras de la respuesta.$response->successful()
: Devuelve un valor booleano que indica si el código de estado de la respuesta está dentro del rango 200-299 y el tipo de contenido de la respuesta no está vacío. Este método tiene en cuenta tanto el código de estado como el tipo de contenido de la respuesta.$response->failed()
: Devuelve un valor booleano que indica si el código de estado de la respuesta está fuera del rango 200-299. Este método es el opuesto del métodook()
.Cuándo utilizar cada método
El método a utilizar depende de lo que necesites verificar en la respuesta. Si solo necesitas saber si la solicitud fue exitosa en términos del código de estado, utiliza el método
ok()
. Si necesitas verificar si la solicitud fue exitosa en términos tanto del código de estado como del tipo de contenido, utilizasuccessful()
. Y si solo necesitas saber si la solicitud ha fallado, utiliza el métodofailed()
.Es importante tener en cuenta que
successful()
devuelve false si el tipo de contenido de la respuesta está vacío, incluso si el código de estado está dentro del rango 200-299. Esto significa que si esperas una respuesta vacía, debes utilizarok()
en su lugar.