1. Go to this page and download the library: Download rnr1721/le7-api-request library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
rnr1721 / le7-api-request example snippets
use Core\Factories\HttpClientFactory;
use Nyholm\Psr7\Factory\Psr17Factory;
// Create PSR factories. Nyholm realisation is a single factory to all
$psr17Factory = new Psr17Factory();
// Create httpClient (PSR ClientInterface implementation)
$httpClient = new HttpClientFactory($psr17Factory);
$factory = new HttpClientFactory(
$psr17Factory, // UriFactoryInterface
$psr17Factory, // RequestFactoryInterface
$psr17Factory, // ResponseFactoryInterface
$psr17Factory, // StreamFactoryInterface
$httpClient // ClientInterface implementation
);
$apiRequest = $factory->getApiRequest()
$data = [
// Request data here
];
$headers = [
'content-language' => 'ru'
];
// Get ResponseInterface for POST request
$apiRequest->post('https://example.com/api', $data, $headers)->getResponse();
// Get array for GET request
$apiRequest->get('https://example.com/api')->toArray();
// Get object for PUT request
$apiRequest->put('https://example.com/api')->toObject();
// Get ResponseInterface for PUT request
// You can use request() method for any request
$apiRequest->request('PUT','https://example.com/api')->getResponse();
// Get array from response
$apiRequest->request('POST','https://example.com', $data, $headers)->toArray();
// Get object from response
$apiRequest->request('POST', 'https://example.com', $data, $headers)->toObject();
// This will return ResponseInterface of request
$apiRequest->getResponse('POST', 'https://example.com', $data, $headers);
// You can set Uri separately if you need it
$apiRequest->setUri('https://example.com');
$apiRequest->getResponse('POST', null, $data, $headers);
$apiRequest->get();
// Make something
// Get last created request
$apiRequest->getLast()->toArray();
$headers = [
'My-Great-Header' => 'header_value'
// Array with headers
]
// Set many headers for all requests in future
$apiRequest->setGlobalHeaders($headers);
// Set one global permanent header
$apiRequest->setGlobalHeader('Content-Language', 'en');
$headers = [
'My-Great-Header' => 'header_value'
// Array with headers
]
// Set many headers for next request only
$apiRequest->setHeaders($headers);
// Set one header for next request only
$apiRequest->setHeader('Content-Language', 'en');
// Also you can set one-time header in method:
$apiRequest->get('https://example.com', null, $headers);
$apiRequest->setTimeout(5); //default 10
$apiRequest->setMaxRedirects(5); // Default is 3
$apiRequest->setFollowLocation(false); // Default is true
// This is content type for requests,
// Default is application/json
$apiRequest->setContentType('multipart/form-data')
// Get array from response
$apiRequest->request('POST', 'https://example.com', $data, $headers)->toArray();
// Get array from response
$apiRequest->request('POST', 'https://example.com', $data, $headers)->toObject();
namespace Core\Interfaces;
use Psr\Http\Message\ResponseInterface;
interface ResponseConvertorInterface
{
public function get(?ResponseInterface $response = null): mixed;
}
// We have created instance
$newHttpClient; // ClientInterface
// Add new ClientInterface and make it active
$apiRequest->addHttpClient('new key', $newHttpClient, true);
// Make our requests
// Switch to default ClientInterface
$apiRequest->setActiveHttpClient('default');
$factory = new HttpClientFactory(
$psr17Factory, // UriFactoryInterface
$psr17Factory, // RequestFactoryInterface
$psr17Factory, // ResponseFactoryInterface
$psr17Factory, // StreamFactoryInterface
$httpClient // ClientInterface implementation
);
// $convertor is ResponseConvertor instance
$apiRequest = $factory->getApiRequest('https://example.com');
// And now you can use it -it will be https://example.com/contacts/get
$result = $apiRequest->setUri('/contacts/get')->get();
$apiRequest->setUriPrefix('https://example.com');
use Core\Interfaces\ApiRequestInterface;
use Nyholm\Psr7\Factory\Psr17Factory;
use Core\Factories\HttpClientFactory;
use Core\Interfaces\HttpClientFactoryInterface;
use Psr\Http\Client\ClientInterface;
use Psr\Container\ContainerInterface;
use function DI\factory;
return [
ApiRequestInterface::class => factory(function (ContainerInterface $c) {
/** @var HttpClientFactoryInterface $factory */
$factory = $c->get(HttpClientFactoryInterface::class);
return $factory->getApiRequest('https://example.com/api');
}),
HttpClientFactoryInterface::class => factory(function (ContainerInterface $c) {
/** @var Psr17Factory $psr17factory */
$psr17factory = $c->get(Psr17Factory::class);
return new HttpClientFactory(
$psr17factory, // UriFactoryInterface
$psr17factory, // RequestFactoryInterface
$psr17factory, // ResponseFactoryInterface
$psr17factory // StreamFactoryInterface
$c->get(ClientInterface::class) // ClientInterface
);
}),
ClientInterface::class => factory(function (ContainerInterface $c) {
/** @var Psr17Factory $psr17factory */
$psr17factory = $c->get(Psr17Factory::class);
return new \Core\HttpClient\HttpClientCurl($psr17factory);
})
];
use Core\Factories\HttpClientFactory;
use Core\Events\AfterApiRequestEvent;
use Psr\EventDispatcher\EventDispatcherInterface;
use Nyholm\Psr7\Factory\Psr17Factory;
// Create PSR factories. Nyholm realisation is a single factory to all
$psr17Factory = new Psr17Factory();
$factory = new HttpClientFactory(
$psr17Factory, // UriFactoryInterface
$psr17Factory, // RequestFactoryInterface
$psr17Factory, // StreamFactoryInterface
$httpClient, // ClientInterface implementation if not default
);
$apiRequest = $factory->getApiRequest();
// Register the AfterApiRequestEvent
$eventDispatcher->addListener(AfterApiRequestEvent::class, function (AfterApiRequestEvent $event) {
// Processing event, for example logging
$response = $event->getResponse();
$method = $event->getMethod();
$uri = $event->getUri();
$data = $event->getData();
$headers = $event->getHeaders();
// log response
// ...
});
// Send the request and get response
$response = $apiRequest->request('GET', 'https://example.com');
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.