Laravel традиционно делает упор на удобство разработчиков, и релиз 12.44 продолжает эту тенденцию. В этой версии команда Laravel представила несколько полезных улучшений, ориентированных на более чистую и выразительную работу с HTTP-взаимодействиями, тестами и валидацией.
Вызов функций после получения HTTP-ответа
Одно из ключевых нововведений это метод afterResponse() для HTTP-клиента. Он позволяет регистрировать обратные вызовы, которые выполняются после того, как HTTP-ответ получен и сформирован.
Раньше обработку ответа обычно делали прямо после вызова: проверяли заголовки, логировали статусы, отправляли события или трансформировали данные. Теперь такую логику можно вынести непосредственно в цепочку вызовов HTTP-клиента, что делает код чище и переиспользуемым.
Пример использования
return Http::acceptJson()
->withHeader('X-Shopify-Access-Token', $shopCreds->token)
->baseUrl("https://{$shopCreds->shop_domain}.myshopify.com/admin/api/2025-10/")
->afterResponse(function (Response $response) {
logger()->info('Ответ получен', [
'status' => $response->status(),
]);
})
->get('products.json');В этом примере логирование статуса ответа происходит после того, как ответ полностью сформирован.
Реальный кейс: уведомления об устаревших API
Очень полезный сценарий, когда нужно мониторить заголовки, которые предупреждают о том, что API устарело:
return Http::acceptJson()
->withHeader('X-Shopify-Access-Token', $shopCreds->token)
->baseUrl("https://…")
->afterResponse(function (Response $response) use ($shopCreds) {
$header = $response->header('X-Shopify-API-Deprecated-Reason');
if ($header) {
event(new ShopifyDeprecationNotice(
$shopCreds->shop,
$header
));
}
})
->get('orders.json');Такой код отслеживает предупреждения об устаревании API и отправляет соответствующее событие.
Преобразование ответа в собственные классы
Метод afterResponse() можно использовать не только для логирования или событий, но и для мутатизации ответа. Например, обернуть его в пользовательский объект или DTO:
->afterResponse(fn (Response $response) =>
new ShopifyResponse($response->toPsrResponse())
)Это помогает отделить HTTP-слой от бизнес-логики и централизовать работу с ответами.
Новые методы для тестов
В Laravel 12.44 также появились улучшенные методы для ассертов заголовков в тестах. Теперь можно писать более выразительные проверки:
$response->assertHeader('X-RateLimit-Remaining');
$response->assertHeader('Content-Type', 'application/json');Такие проверки делают тесты более понятными и дают более точные сообщения об ошибках.
Расширенные методы валидации дат
Система валидации в Laravel стала ещё выразительнее за счёт новых нативных методов для проверки дат. Это упрощает правила валидации, особенно когда дело касается сложных условий.
Пример использования:
use Illuminate\Validation\Rules\Date;
$request->validate([
'start_date' => [
'required',
Date::parseable()->beforeOrEqual('today'),
],
]);Такой код легче читать и меньше шансов ошибиться при формулировке правил.
Основные преимущества релиза:
afterResponse()даёт гибкий способ обработать HTTP-ответы;улучшенные методы ассертов делают тесты более выразительными;
новые helpers для валидации упрощают проверку дат.