Чтобы использовать Guzzle с Slim, вам нужно
установить его, запустив composer
$ composer require guzzlehttp/guzzle:~6.0
Установка Guzzle Быстрый запуск Guzzle
Создайте регистрацию зависимостей, например,
<?php
use GuzzleHttp\Client;
$container = $app->getContainer();
$container['httpClient'] = function ($cntr) {
return new Client();
};
и поместите ее где-нибудь, где она будет выполняться, когда index.php
будет загружен основной файл начальной загрузки.
Затем в своем коде вы можете получить экземпляр жрета из контейнера
$guzzle = $container->httpClient;
Например, если у вас следующий маршрут
$app->get('/example', App\Controllers\Example::class);
И контроллер Example
, как следует
<?php
namespace App\Controllers;
use GuzzleHttp\ClientInterface;
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;
class Example
{
private $httpClient;
public function __construct(ClientInterface $httpClient)
{
$this->httpClient = $httpClient;
}
public function __invoke(Request $request, Response $response, array $args)
{
//call api, etc..etc
$apiResponse = $this->httpClient->get('http://api.blabla.org/get');
//do something with api response
return $response;
}
}
Чтобы внедрить экземпляр жрета в контроллер Example
, вы создаете его регистрацию зависимостей
use App\Controllers\Example;
$container[Example::class] = function ($cntr) {
return new Example($cntr->httpClient);
}
Чтобы ускорить загрузку вашей страницы, если вы являетесь разработчиком API, то начните с этого.Если вы не являетесь разработчиком API и не имеете никакого контроля, попробуйте подумать, сможете ли вы уменьшить количество вызовов API, удалив несущественные.Или, в крайнем случае, кешируйте ответ вызова API в хранилище, которое быстрее будет загружать ваше приложение позже.
Например, с помощью redis.Вы вычисляете хэш вызова URL API, включая его строку запроса, и используете хэш в качестве ключа для доступа к кешированному ответу вызова API.