Definitivamente, para cualquier proyecto PHP, es posible que desee utilizar GuzzleHTTP para enviar solicitudes. Guzzle tiene muy buena documentación que puedes consultar aquí . Solo quiero decir que, probablemente desee centralizar el uso de la clase de cliente de Guzzle en cualquier componente de su proyecto Laravel (por ejemplo, un rasgo) en lugar de crear instancias de cliente en varios controladores y componentes de Laravel (como muchos artículos y las respuestas sugieren).
Creé un rasgo que puede intentar usar, que le permite enviar solicitudes desde cualquier componente de su proyecto Laravel, simplemente usándolo y llamando 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;
}
}
Tenga en cuenta que este rasgo incluso puede manejar el envío de archivos.
Si desea más detalles sobre este rasgo y algunas otras cosas para integrar este rasgo a Laravel, consulte este artículo . Además, si está interesado en este tema o necesita ayuda importante, puede tomar mi curso que lo guiará en todo el proceso.
Espero que les sirva de ayuda.
Los mejores deseos :)