HTTP фасад в Laravel 7

Laravel 7x включает фасад для выполнения Http-запроса со стороны сервера. До Laravel 7 большинство разработчиков использовали пакет Guzzle Http client для выполнения Http-запроса, что непросто для новичка и немного сложно при работе с API-запросом, аутентификацией и так далее. Начиная с Laravel 7, разработчики могут легко использовать HTTP-фасад для создания HTTP-запроса с хорошим и чистым синтаксисом! На самом деле, Laravel 7 Http facade использует библиотеку Guzzle, но класс Http facade поставляется с очень простым и чистым синтаксисом, что делает его более элегантным для разработчиков. Давайте рассмотрим http-фасад Laravel 7 на примере.

Для Laravel 7 мы должны подключить фасад в наш код.

use Illuminate\Support\Facades\Http;

Laravel 7 Http GET запрос

Это очень просто сделать get запрос с помощью Laravel 7 Http фасада. Мы должны просто передать URL-адрес в методе get, а остальные вещи будут обрабатываться с помощью HTTP-фасада. Мы можем проанализировать тело ответа с помощью метода JSON, что облегчает жизнь, не так ли?

$response = Http::get("http://jsonplaceholder.typicode.com/todos/1");
$response->json();
laravel7-http-ответ.формат PNG

Мы можем получить ответные данные различными способами с помощью этих методов

$response['foo']; // get the specific data from body
$response->body(); // it will return raw response body data
$response->json(); // it will parse response body to JSON
$response->headers(); // get the response headers

Получить запрос с параметрами

Пример ниже показывает как передавать параметры в get запросе.

$response = Http::get("http://example.com/search",['catId' => 123]);

Это сделает запрос get похожим на http://example.com/search?catId=123

Laravel 7 Http POST запрос

Запрос POST, как и запрос GET, делается аналогично. Ничего другого писать не потребуется.

$data = [
  'email'=>'user@example.com',
  'password'=>12345
];
$response = Http::post("http://example.com/api/login",$data);

if($response->ok()){
  // do whatever you want
}

POST запрос с заголовками

Иногда нам нужно передать информацию заголовков вместе с нашим запросом. В Laravel 7 Http facade мы можем легко сделать это с помощью метода withHeaders.

$data = [
  'title'=>'Task No 1',
  'status'=>1
];
$url = "http://example.com/api/todos/create";

$response = Http::withHeaders(['token' => 'xe234232...'])->post($url,$data);
if($response->ok()){
  // do whatever you want
}

Laravel 7 хзелперы Http запросов

// send as a form-data
$response = Http::asForm()->post(...);

//send raw body
$response = Http::withBody(base64_encode($photo), 'image/jpeg')->post(...);

$response = Http::withHeaders(['foo'=>'bar'])->post...); // send headers with request

//send files as multi-part
$response = Http::attach('attachment',file_get_contents('photo.jpg'))->post(...);

// basic authentication
$response = Http::withBasicAuth('user@example.com', 'q2343')->post(...);

$response = Http::withToken('q23432x342')->post(...);

Laravel 7 хелперы по Http ответам

Вот некоторые Laravel 7 Http хелперы для обработки ответов, которые помогают нам справиться с нашим ответом.

$response->status();
$response->ok();
$response->successful();
$response->serverError();
$response->clientError();

Laravel 7 Http хелперы для работы со временем

//wait maximum of 3 seconds for the response
Http::timeout(3)->get(...);

//3 times retry with 100 milliseconds interval
Http::retry(3, 100)->post(...);

Рейтинг
( 2 оценки, среднее 5 из 5 )
Максим Гречушников/ автор статьи
Мне 40 лет, и больше половины жизни я занимаюсь разработкой. За это время я работал с корпоративными системами, highload-проектами, интеграциями, платежными решениями, внутренними платформами и legacy-кодом, который пережил не одного разработчика. Некоторые системы, кажется, переживут и нас. Моя специализация — PHP, Laravel, backend-архитектура, DDD, тестирование, рефакторинг и техническое лидерство. Мне интересны задачи, где нужно соединить код, бизнес, данные, процессы и здравый смысл. Последние годы я много работаю с LLM и AI-инструментами: использую их для проектирования, анализа кода, документации, тестов, ревью, работы с legacy и построения инженерных процессов. Для меня LLM — это не замена разработчику, а усилитель для тех, кто умеет думать системно. В блоге я пишу о Laravel, PHP, архитектуре, тестировании, инженерной практике, управлении разработкой и реальном применении AI в работе программиста.
Понравилась статья? Поделиться с друзьями: