Definitivamente, para qualquer projeto PHP, você pode usar o GuzzleHTTP para enviar solicitações. Guzzle tem uma documentação muito boa, você pode conferir aqui . Eu só quero dizer que você provavelmente deseja centralizar o uso da classe Client do Guzzle em qualquer componente do seu projeto Laravel (por exemplo, uma característica) em vez de criar instâncias do cliente em vários controladores e componentes do Laravel (como muitos artigos e as respostas sugerem).
Eu criei uma característica que você pode tentar usar, que permite enviar solicitações de qualquer componente do seu projeto Laravel, apenas usando-o e ligando para 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;
}
}
Observe que essa característica pode até lidar com o envio de arquivos.
Se você quiser obter mais detalhes sobre essa característica e outras coisas para integrar essa característica ao Laravel, consulte este artigo . Além disso, se você estiver interessado neste tópico ou precisar de ajuda importante, pode seguir meu curso, que o orienta em todo o processo.
Espero que ajude todos vocês.
Muitas felicidades :)