Определенно, для любого 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, проверьте эту статью . Кроме того, если вы заинтересованы в этой теме или вам нужна серьезная помощь, вы можете пройти мой курс, который проведет вас через весь процесс.
Я надеюсь, что это поможет всем вам.
С наилучшими пожеланиями :)