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();
Мы можем получить ответные данные различными способами с помощью этих методов
$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(...);