A slim psr compliant http client to provide better interoperability.
The purpose of this package is to create an interoperable http client implementation allowing a "bring you own packages" approach to connection to 3rd party services.
The main goal of this package is to adhere to the following PSRs:
$ composer require juststeveking/http-slim
You are then free to use it as needed within your projects.
The next step is to install a compliant package to do the request itself.
A few packages that are recommended:
Once you have a client to inject, you can set up an easy to use and consistent implementation. The following example is using the Symfony HttpClient as it has the best documentation I have seen so far.
<?php declare(strict_types=1); use JustSteveKing\HttpSlim\HttpClient; use Symfony\Component\HttpClient\Psr18Client; $httpClient = HttpClient::build( new Psr18Client(), // our client new Psr18Client(), // our request factory new Psr18Client() // our stream factory ); // perform a get request $httpClient->get('https://api.example.com/v1/resource'); // perform a post request $httpClient->post( 'https://api.example.com/v1/resource', ['foo' => 'bar'] ); // perform a put request $httpClient->put( 'https://api.example.com/v1/resource/identifier', ['foo' => 'bar'] ); // perform a patch request $httpClient->patch( 'https://api.example.com/v1/resource/identifier', ['foo' => 'bar'] ); // perform a delete request $httpClient->delete( 'https://api.example.com/v1/resource/identifier' ); // perform an options request $httpClient->options( 'https://api.example.com/v1/resource/identifier', ['X-OPTIONAL' => 'headers'] );
There is a composer script available to run the tests:
$ composer run preflight:test
However, if you are unable to run this please use the following command:
$ ./vendor/bin/phpunit --testdox
If you discover any security related issues, please email firstname.lastname@example.org instead of using the issue tracker.