Безперечно, для будь-якого проекту PHP ви можете використовувати GuzzleHTTP для надсилання запитів. У Guzzle є дуже приємна документація, яку ви можете перевірити тут . Я просто хочу сказати, що, ймовірно, ви хочете централізувати використання класу клієнтів Guzzle в будь-якому компоненті вашого проекту Laravel (наприклад, ознака), а не створювати клієнтські екземпляри на кількох контролерах і компонентах Laravel (стільки ж статей і відповіді пропонують).
Я створив ознаку, яку ви можете спробувати використовувати, яка дозволяє надсилати запити з будь-якого компонента вашого проекту Laravel, просто використовуючи його та звертаючись до нього makeRequest
.
namespace App\Traits;
use GuzzleHttp\Client;
trait ConsumesExternalServices
{
/**
* Send a request to any service
* @return string
*/
public function makeRequest($method, $requestUrl, $queryParams = [], $formParams = [], $headers = [], $hasFile = false)
{
$client = new Client([
'base_uri' => $this->baseUri,
]);
$bodyType = 'form_params';
if ($hasFile) {
$bodyType = 'multipart';
$multipart = [];
foreach ($formParams as $name => $contents) {
$multipart[] = [
'name' => $name,
'contents' => $contents
];
}
}
$response = $client->request($method, $requestUrl, [
'query' => $queryParams,
$bodyType => $hasFile ? $multipart : $formParams,
'headers' => $headers,
]);
$response = $response->getBody()->getContents();
return $response;
}
}
Зауважте, що ця ознака може обробляти навіть надсилання файлів.
Якщо ви хочете отримати детальнішу інформацію про цю ознаку та деякі інші речі, щоб інтегрувати цю ознаку до Laravel, перегляньте цю статтю . Крім того, якщо вас зацікавила ця тема або вам потрібна значна допомога, ви можете пройти мій курс, який керує вами у всьому процесі.
Я сподіваюся, що це допоможе вам усім.
Найкращі побажання :)