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 )
Maxyc Webber/ автор статьи
Мне 35 лет. Опыт профессиональной разработки 15 лет. Занимаюсь разработкой и поддержкой корпоративных систем автоматизации бизнеса, а также высоконагруженными проектами. Мне нравится решать нестандартные проблемы бизнеса. Имею опыт формирования команд под проект, налаживания процесса разработки, коммуникации программистов и заказчиков. Есть опыт работы с зарубежными заказчиками (ОАЭ, Польша, Германия, Швейцария).
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.