En définitive, pour tout projet PHP, vous souhaiterez peut-être utiliser GuzzleHTTP pour l'envoi de requêtes. Guzzle a une très belle documentation que vous pouvez consulter ici . Je veux juste dire que, vous souhaitez probablement centraliser l'utilisation de la classe Client de Guzzle dans n'importe quel composant de votre projet Laravel (par exemple un trait) au lieu de créer des instances Client sur plusieurs contrôleurs et composants de Laravel (autant d'articles et réponses suggèrent).
J'ai créé un trait que vous pouvez essayer d'utiliser, qui vous permet d'envoyer des requêtes à partir de n'importe quel composant de votre projet Laravel, en l'utilisant simplement et en appelant 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;
}
}
Notez que cette caractéristique peut même gérer l'envoi de fichiers.
Si vous voulez plus de détails sur ce trait et d'autres éléments pour intégrer ce trait à Laravel, consultez cet article . De plus, si vous êtes intéressé par ce sujet ou avez besoin d'une assistance majeure, vous pouvez suivre mon cours qui vous guide tout au long du processus.
J'espère que cela vous aidera tous.
Meilleurs vœux :)