Ostatecznie dla każdego projektu PHP możesz chcieć użyć GuzzleHTTP do wysyłania żądań. Guzzle ma bardzo dobrą dokumentację, którą możesz sprawdzić tutaj . Chcę tylko powiedzieć, że prawdopodobnie chcesz scentralizować użycie klasy Client Guzzle w dowolnym komponencie projektu Laravel (na przykład cechę) zamiast tworzyć instancje klienta na kilku kontrolerach i komponentach Laravel (tyle artykułów i odpowiedzi sugerują).
Stworzyłem cechę, której możesz spróbować użyć, która umożliwia wysyłanie żądań z dowolnego komponentu twojego projektu Laravel, po prostu używając go i dzwoniąc do 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;
}
}
Zauważ, że ta cecha może nawet obsługiwać wysyłanie plików.
Jeśli chcesz uzyskać więcej informacji na temat tej cechy i innych rzeczy, aby zintegrować tę cechę z Laravel, przeczytaj ten artykuł . Dodatkowo, jeśli jesteś zainteresowany tym tematem lub potrzebujesz dużej pomocy, możesz wziąć udział w moim kursie, który poprowadzi Cię przez cały proces.
Mam nadzieję, że to wam wszystkim pomoże.
Wszystkiego najlepszego :)