Sicuramente, per qualsiasi progetto PHP, potresti voler utilizzare GuzzleHTTP per inviare richieste. Guzzle ha un'ottima documentazione che puoi controllare qui . Voglio solo dirlo, probabilmente vuoi centralizzare l'uso della classe Client di Guzzle in qualsiasi componente del tuo progetto Laravel (ad esempio un tratto) invece di creare istanze Client su diversi controller e componenti di Laravel (come molti articoli e le risposte suggeriscono).
Ho creato un tratto che puoi provare a utilizzare, che ti consente di inviare richieste da qualsiasi componente del tuo progetto Laravel, semplicemente utilizzandolo e chiamando 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;
}
}
Si noti che questa caratteristica può persino gestire l'invio di file.
Se vuoi maggiori dettagli su questo tratto e alcune altre cose per integrare questo tratto su Laravel, consulta questo articolo . Inoltre, se sei interessato a questo argomento o hai bisogno di maggiore assistenza, puoi seguire il mio corso che ti guida durante l'intero processo.
Spero che aiuti tutti voi.
Auguri :)