РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
570 of 1392 menu

Метод throw

Метод throw применяется к объекту ответа, полученному от HTTP-клиента Laravel, и позволяет сразу сгенерировать исключение, если запрос завершился неудачей (код статуса 400 и выше). Это избавляет от необходимости вручную проверять статус ответа в каждом запросе. Метод не принимает параметров и возвращает тот же объект ответа, если статус успешный, либо выбрасывает исключение Illuminate\Http\Client\RequestException.

Синтаксис

<?php $response = Http::get($url)->throw(); ?>

Пример

Выполним GET-запрос к внешнему API и применим метод throw. Если сервер вернёт ошибку, будет выброшено исключение:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Http; use Illuminate\Http\Request; class ApiController extends Controller { public function index() { try { $response = Http::get('https://api.example.com/users') ->throw(); $users = $response->json(); foreach ($users as $user) { echo $user['name']; } } catch (\Exception $e) { echo "Error: " . $e->getMessage(); } } } ?>

Результат выполнения кода при успешном ответе:

["John Doe", "Jane Smith", "Bob Johnson"]

Результат выполнения кода при ошибке (например, сервер вернул 404):

"Error: HTTP request returned status code 404"

Пример

Метод throw можно использовать в цепочке с другими методами, такими как json или body. Это позволяет сразу получить обработанные данные без дополнительных проверок:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Http; class DataController extends Controller { public function getData() { $data = Http::post('https://api.example.com/data', [ 'id' => 1, 'type' => 'user' ]) ->throw() ->json(); foreach ($data['items'] as $item) { echo $item['name']; } } } ?>

Результат выполнения кода:

["item 1", "item 2", "item 3", "item 4", "item 5"]

Пример

Метод throw можно настроить для выброса исключения только при определённых кодах ошибок с помощью дополнительных параметров. В примере обработаем ответ с кодом 403 как перенаправление на другую страницу:

<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Http; use Illuminate\Http\Request; class AuthController extends Controller { public function login(Request $request) { try { $response = Http::asForm()->post('https://api.example.com/login', [ 'email' => $request->email, 'password' => $request->password ])->throw(); $token = $response->json('token'); echo "Login successful. Token: " . $token; } catch (\Illuminate\Http\Client\RequestException $e) { if ($e->getCode() === 403) { echo "Access forbidden. Redirecting to login page."; } else { echo "Error: " . $e->getMessage(); } } } } ?>

Результат выполнения кода при успешном входе:

"Login successful. Token: abcdef123456"

Результат выполнения кода при ошибке 403:

"Access forbidden. Redirecting to login page."

Смотрите также

  • метод successful,
    который проверяет, был ли ответ успешным (код 200-299)
  • метод failed,
    который проверяет, был ли ответ неудачным (код 400-599)
  • метод status,
    который возвращает код статуса HTTP-ответа
  • метод json,
    который преобразует ответ в массив или объект
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить