HTTP CLient
Solital has a component to manipulate the HTTP client, useful for consuming API and making HTTP requests.
Before, you will need to install the component using the command below:
composer install solital/http-client
Requirements
- PHP >= 7.2 (Compatible with PHP 8)
- CURL extension enabled
Basic use
To make basic use of the component, you will need to instantiate the HttpClient
class. Then, call the request
function, passing the method (GET, POST, ...) and the url as a parameter. Then return the data.
use Solital\HttpClient;
$client = new HttpClient();
$client->request("GET", "http://api.url.com");
$res = $client->toJson();
pre($res);
Supported methods
HttpClient supports the methods below.
- GET
- POST
- PUT
- DELETE
- PATCH
- OPTIONS
Return types
You can return the answer in json, array or object. The methods below show an example.
$client = new HttpClient();
$client->request("GET", "http://api.url.com");
/** Return json */
$res = $client->toJson();
/** Return array */
$res = $client->toArray();
/** Return object */
$res = $client->toObject();
pre($res);
Sending data
If you are using a POST or PUT request, for example, and need to send data to the HTTP header, you can pass an array with the values in the request
method.
$client = new HttpClient();
$res = $client->request("PUT", "http://api.url.com", [
'data' => 'your_data_values'
])->toJson();
echo $res;
Custom Headers
By default, HttpClient has the following headers:
- Content-Type: application/json
- Accept: application/json
To add other headers to the request, use an array in the constructor on the instance.
$headers = [
'Content-Type: application/pdf'
];
$client = new HttpClient($headers);
#...
Enabling SSL verification
HttpClient by default does not perform SSL verification. To enable verification, use the enableSSL
method.
$client = new HttpClient();
$client->enableSSL();
#...
Authentication
Basic Auth
To perform authentication on an API that requires basic authentication, you can use the second parameter to inform the user and password. It is necessary to inform an array containing the indexes user
andpass
.
$client = new HttpClient(null, [
'user' => 'username',
'pass' => '123'
]);
$client->request("GET", "http://api.url.com");
$res = $client->toJson();
pre($res);
Securing routes
With Basic Auth
Basic authentication requires the username and password in the class constructor. If an index other than user
andpass
is informed, an exception will be thrown.
You can protect your routes through basic authentication as shown below.
use Solital\Http\Auth\HttpAuth;
$auth = new HttpAuth([
'user' => 'username',
'pass' => '123'
]);
$auth->basic();
With Digest Auth
In digest authentication, it is not necessary to inform anything in the constructor, just pass the allowed users with their respective passwords as a parameter in the digest
method.
use Solital\Http\Auth\HttpAuth;
$auth = new HttpAuth();
# 'username' => 'password'
$auth->digest(['admin' => 'pass1', 'admin2' => 'pass2', ...]);