Matawebsite Promo Lebaran 2022

Async HTTP client Requests akan hadir di di Laravel 8.x

date 13 Jul 2021
date Lev Yasin
date 1492
date Web Programming
Async HTTP client Requests akan hadir di di Laravel 8.x

Tahukah Anda bahwa Asynchronous HTTP client requests akan datang di Laravel 8.x. Lihat pada bulan Maret 2020, ketika Laravel 7  dirilis , klien HTTP baru diperkenalkan oleh Laravel yang pada dasarnya adalah pembungkus   klien HTTP Guzzle .

Anda telah melihat bahwa ini membuat pengalaman pengembang jauh lebih lancar dan lebih mudah. Misalnya, permintaan POST biasa menggunakan  klien HTTP  akan terlihat seperti ini

$response = Http::post('http://test.com/users', [
    'name' => 'Ujang Kusnadi',
    'role' => 'Software Engineer',
]);

Concurrent Asynchronous Requests

Seperti yang saya sebutkan di atas,  PR  oleh  Andrea Marco Sartori  ini membawa konkurensi saat mengirim permintaan klien asynchronous dengan klien HTTP Laravel dengan menggunakan  Guzzle/Promises di  bawah tenda. PR ini akan disertakan dalam rilis Laravel 8.x berikutnya.

Pada dasarnya ada dua cara Anda dapat membuat permintaan asynchronous menggunakan ini.

  • Permintaan asynchronous menggunakan async()
  • Kumpulan untuk menangani beberapa permintaan asynchronous secara bersamaan 

Asynchronous client requests menggunakan async()

Jika Anda ingin membuat permintaan asynchronous, Anda dapat membuatnya seperti itu.

$promise = Http::async()->get($url);

Untuk membuat permintaan klien asynchronous, Anda perlu mengaitkan  async() metode pada klien Http sebelum membuat permintaan. Tetapi alih-alih mengembalikan respons, itu akan mengembalikan  janji  yang dapat Anda selesaikan/tolak seperti ini

$promise = Http::async()->get($url)->then(
    fn (Response|TransferException $result) => $this->handleResult($result)
);

Dan ini adalah bagaimana kita bisa mendapatkan respons dari permintaan asynchronous.

Kumpulan untuk multiple async requests

Jika Anda ingin membuat beberapa permintaan asynchronous secara bersamaan, Anda dapat menggunakan kumpulan seperti itu.

use Illuminate\Http\Client\Pool;

$responses = Http::pool(fn (Pool $pool) => [
    $pool->get('https://httpbin.org/delay/6')->then(/* ... */),
    $pool->get('https://httpbin.org/delay/3')->then(/* ... */),
    $pool->get('https://httpbin.org/delay/3')->then(/* ... */),
]);

$responses[0]->ok();
$responses[1]->successful();

Semoga dapat membantu Anda.

Matawebsite Promo
lev_yasin.png

Lev Yasin

Instruktur Web Programming Mataweb

Sangat tertarik dengan dunia Pemrograman Web & Mobile, saat ini fokus pada bagian Backend Web Developer, menggunakan PHP sebagai bahasa pemrograman utama, biasanya saya menggunakan Laravel.

Artikel Populer

Halo, ada yang bisa kami bantu?
Daftar Sekarang