Метод failed
Метод failed применяется к объекту ответа, полученному от HTTP-клиента Laravel, и возвращает true, если статус ответа указывает на ошибку (код 400 или выше), и false в противном случае. Это удобный способ проверить, произошла ли ошибка при выполнении запроса, без необходимости вручную проверять код статуса. Метод не принимает никаких параметров.
Синтаксис
<?php
$response->failed();
?>
Пример
Давайте проверим, был ли успешным запрос к внешнему API:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
class UserController extends Controller
{
public function getUsers()
{
$response = Http::get('https://api.example.com/users');
if ($response->failed()) {
echo "Request failed with status: " . $response->status();
} else {
$users = $response->json();
echo "Users fetched successfully";
}
}
}
?>
Результат выполнения кода при успешном запросе:
"Users fetched successfully"
Результат выполнения кода при ошибке:
"Request failed with status: 404"
Пример
Давайте обработаем несколько различных кодов ошибок с помощью метода failed:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Http;
class ApiController extends Controller
{
public function checkService()
{
$urls = [
'https://api.example.com/status',
'https://api.example.com/data',
'https://api.example.com/health'
];
foreach ($urls as $url) {
$response = Http::get($url);
if ($response->failed()) {
echo "Failed: " . $url . " - Status: " . $response->status();
} else {
echo "Success: " . $url;
}
}
}
}
?>
Результат выполнения кода:
"Success: https://api.example.com/status"
"Failed: https://api.example.com/data - Status: 500"
"Success: https://api.example.com/health"
Пример
Давайте используем метод failed вместе с другими методами для комплексной обработки ошибок:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Http;
use Illuminate\Http\Request;
class PostController extends Controller
{
public function createPost(Request $request)
{
$response = Http::post('https://api.example.com/posts', [
'title' => $request->input('title'),
'body' => $request->input('body')
]);
if ($response->failed()) {
if ($response->status() == 422) {
echo "Validation errors: " . $response->body();
} else {
echo "Error creating post. Status: " . $response->status();
}
} else {
echo "Post created successfully. ID: " . $response->json('id');
}
}
}
?>
Результат выполнения кода при успешном создании:
"Post created successfully. ID: 123"
Результат выполнения кода при ошибке валидации:
"Validation errors: {""title"":[""The title field is required.""]}"
Смотрите также
-
метод
successful,
который проверяет успешность выполнения запроса -
метод
status,
который возвращает код статуса ответа -
метод
body,
который возвращает тело ответа -
метод
throw,
который выбрасывает исключение при ошибке