Serialise/Deserialise data from third party APIs
Retrieve data from third party APIs and deserialise into PHP models.
The package is available on Packagist, you can install it using Composer.
bash
composer require davek1312/apiintegrator
Build your response model class. Annotate your model using the JMS annotations. Your model should have the same properties as the API response that it receives. You response model defines the APIs response data type. ```php use JMS\Serializer\Annotation\Exclude;
class YourResponseModel extends Davek1312\ApiIntegrator\Models\ApiIntegratorResponseModel {
/**
* @Exclude()
*/
public static $dataType = 'json';
} ```
If the API response contains error attributes your response model class should override the base response error accessors: ```php
use JMS\Serializer\Annotation\Type;
class YourResponseModel extends Davek1312\ApiIntegrator\Models\ApiIntegratorResponseModel {
/**
* @Type("string")
*/
private $apiErrorMessage;
/**
* @Type("integer")
*/
private $apiErrorCode;
public function getResponseErrorMessage() {
return $this->apiErrorMessage;
}
public function getResponseErrorCode() {
return $this->apiErrorCode;
}
} ```
Your integrator must extend the base integrator and define the response model class and $responseModel
serialisation properties:
```php
use JMS\Serializer\Annotation\Exclude;
use JMS\Serializer\Annotation\Type;
use JMS\Serializer\Annotation\SerializedName;
use YourResponseModel;
class YourIntegrator extends Davek1312\ApiIntegrator\ApiIntegrator {
/**
* @var string
*
* @Exclude()
*/
public static $responseModelClass = YourResponseModel::class;
/**
* @var YourResponseModel
*
* @SerializedName("responseModel")
* @Type("YourResponseModel")
*/
protected $responseModel;
} ```
Bulid your request model:
php
$requestModel = new ApiIntegratorRequestModel($url, $connectionMethod, $connectTimeout, $requestTimeout, $additionalRequestOptions);
Generate your response model using your integrator:
php
$integrator = new YourIntegrator($requestModel);
$responseModel = $integrator->generateNewResponseModel();
Check for errors:
php
if($integrator->hasErrors()) {
$errorModel = $integrator->getErrorModel();
}