Setup
Register Service Provider
Register HttpClientServiceProvider
inside your config/app.php
.
return [
// ... previous not shown ... //
/*
|--------------------------------------------------------------------------
| Autoloaded Service Providers
|--------------------------------------------------------------------------
*/
'providers' => [
\Aedart\Http\Clients\Providers\HttpClientServiceProvider::class
// ... remaining services not shown ... //
],
];
Publish Assets
Run vendor:publish
to publish this package's assets.
php artisan vendor:publish
After the command has completed, you should see the following configuration file in your /configs
directory:
http-clients.php
Publish Assets for Athenaeum Core Application
If you are using the Athenaeum Core Application, then run the following command to publish assets:
php {your-cli-app} vendor:publish-all
Configuration
In your /config/http-clients.php
configuration, you should see a list of "profiles". Feel free to add as many profiles as your application requires.
Each profile consists of two keys:
driver
: Class patch to the Http Client "driver" to be used.options
: Http Client options.
You can use Guzzle's Request Options, for each client profile.
return [
// ... previous not shown
/*
|--------------------------------------------------------------------------
| Http Client Profiles
|--------------------------------------------------------------------------
*/
'profiles' => [
'default' => [
'driver' => \Aedart\Http\Clients\Drivers\DefaultHttpClient::class,
'options' => [
'data_format' => \GuzzleHttp\RequestOptions::FORM_PARAMS,
'grammar-profile' => env('HTTP_QUERY_GRAMMAR', 'default'),
]
],
'json' => [
'driver' => \Aedart\Http\Clients\Drivers\JsonHttpClient::class,
'options' => [
'grammar-profile' => 'json_api',
]
],
// Add your own profiles... e.g. a preconfigured json http client
'flights-api-client' => [
'driver' => \Aedart\Http\Clients\Drivers\JsonHttpClient::class,
'options' => [
'base_uri' => 'https://acme.com/api/v2/flights',
'grammar-profile' => 'odata',
]
],
]
// ... remaining not shown ...
];
Http Query Grammars
Each Http Client profile can specify it's desired Http Query Grammars profile to use. The following grammars are offered by default:
DefaultGrammar
: Does not follow any specific syntax or convention.JsonApiGrammar
: Adheres to Json API's syntax for Http Queries.ODataGrammar
: Adheres to OData's syntax for Http Queries.
You can find a matching profile, inside your config/http-clients.php
, where you may change any of the available options.
<?php
return [
// ... previous not shown ...
'profiles' => [
'json' => [
'driver' => \Aedart\Http\Clients\Drivers\JsonHttpClient::class,
'options' => [
// Http Query grammar profile to use
'grammar-profile' => 'json_api',
]
]
],
/*
|--------------------------------------------------------------------------
| Http Query Grammars
|--------------------------------------------------------------------------
*/
'grammars' => [
'profiles' => [
'json_api' => [
'driver' => \Aedart\Http\Clients\Requests\Query\Grammars\JsonApiGrammar::class,
'options' => [
'datetime_format' => \DateTimeInterface::ISO8601,
'date_format' => 'Y-m-d',
'year_format' => 'Y',
'month_format' => 'm',
'day_format' => 'd',
'time_format' => 'H:i:s',
// ... remaining not shown ...
]
],
// ... remaining not shown ...
]
]
];