Auf jeden Fall möchten Sie für jedes PHP-Projekt GuzzleHTTP zum Senden von Anforderungen verwenden. Guzzle hat eine sehr schöne Dokumentation, die Sie hier überprüfen können . Ich möchte nur sagen, dass Sie wahrscheinlich die Verwendung der Client-Klasse von Guzzle in einer beliebigen Komponente Ihres Laravel-Projekts (z. B. einem Merkmal) zentralisieren möchten, anstatt Client-Instanzen auf mehreren Controllern und Komponenten von Laravel zu erstellen (ebenso viele Artikel) und Antworten vorschlagen).
Ich habe ein Merkmal erstellt, das Sie verwenden können, mit dem Sie Anforderungen von jeder Komponente Ihres Laravel-Projekts senden können, indem Sie es einfach verwenden und aufrufen 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;
}
}
Beachten Sie, dass dieses Merkmal sogar das Senden von Dateien verarbeiten kann.
Wenn Sie weitere Details zu diesem Merkmal und einige andere Dinge wünschen, um dieses Merkmal in Laravel zu integrieren, lesen Sie diesen Artikel . Wenn Sie sich für dieses Thema interessieren oder wichtige Unterstützung benötigen, können Sie auch an meinem Kurs teilnehmen, der Sie durch den gesamten Prozess führt.
Ich hoffe es hilft euch allen.
Die besten Wünsche :)