Метод throw
Метод throw применяется к экземпляру класса Http
и позволяет автоматически выбрасывать исключение, если
ответ HTTP-запроса содержит код ошибки (4xx или 5xx).
Это удобно для обработки неудачных запросов без
дополнительных проверок статуса. После вызова метода
при возникновении ошибки выполнение скрипта прерывается.
Синтаксис
<?php
Http::throw()->get($url);
?>
Пример
Давайте выполним GET-запрос и автоматически выбросим исключение при ошибке:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
class ArticleController extends Controller
{
public function index()
{
$res = Http::throw()
->get('https://api.example.com/articles');
return $res->json();
}
}
?>
Результат выполнения кода при успешном запросе:
["article 1", "article 2", "article 3"]
Результат выполнения кода при ошибке (например, 404):
"Illuminate\Http\Client\RequestException"
Пример
Давайте отправим POST-запрос и выбросим исключение при неудаче:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
class UserController extends Controller
{
public function store()
{
$data = ['name' => 'John', 'email' => 'john@example.com'];
$res = Http::throw()
->post('https://api.example.com/users', $data);
return $res->json();
}
}
?>
Результат выполнения кода при успешном запросе:
{"id": 1, "name": "John", "email": "john@example.com"}
Пример
Давайте выполним запрос с задержкой и выбросим исключение, если ответ не получен:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
class ArticleController extends Controller
{
public function index()
{
$res = Http::timeout(5)
->throw()
->get('https://api.example.com/articles');
return $res->json();
}
}
?>
Результат выполнения кода при превышении таймаута:
"Illuminate\Http\Client\ConnectionException"
Смотрите также
-
метод
get,
который выполняет GET-запрос -
метод
post,
который выполняет POST-запрос -
метод
withHeaders,
который добавляет заголовки к запросу -
метод
throw,
который выбрасывает исключение из ответа