mennen-online/laravel-response-models

该包的最新版本(2.1.0)没有可用的许可信息。

将 Http JSON 响应转换为标准 JSON 格式

2.1.0 2022-07-23 09:59 UTC

This package is auto-updated.

Last update: 2024-09-23 14:39:06 UTC


README

此包提供了一个基类模型,可以扩展数据模型来映射 HTTP 响应。

它不仅限于 Laravel 的 Http 客户端,因此您可以将其与任何您想要的 JSON 响应一起使用。

安装

您可以通过 composer 安装此包

composer require mennen-online/laravel-response-models

用法

以下是一个如何使用此包创建响应模型的示例

use MennenOnline\LaravelResponseModels\Models\BaseModel;

class PersonContact extends BaseModel {
    protected array $fieldMap = [
        'roles.customer.number' => 'customer_number',
        'roles.vendor.number' => 'vendor_number',
        'person' => [
            'first_name' => 'person_first_name',
            'last_name' => 'person_last_name'
        ] 
    ];   
}

现在您已经为 PersonContact 定义了响应模型

以下是一个用于此的 Lexoffice 联系人响应示例

现在我们向 Lexoffice API 发出请求:https://api.lexoffice.io/v1/contacts/2a730f45-8078-3ccc-a2ed-563f18208eff

我们可以使用响应来创建 ResponseModel

 use Illuminate\Support\Facades\Http;

$response = Http::get('https://api.lexoffice.io/v1/contacts/2a730f45-8078-3ccc-a2ed-563f18208eff');

$personContact = new PersonContact($response->object());

现在我们可以以属性的形式访问顶层属性,其他每个属性作为数组

$personContact->version // 1

$personContact->customer_number // 12345

$personContact->__get('person.first_name') // Verena

等等。

嵌套数组也会自动转换为 snake_case - 例如使用 Arr::get 访问。

特性

受到 Laravel 模型的启发,目前可以

  • 定义 getter 和 setter(set{AttributeName}Attribute | get{AttributeName}Attribute)

测试

composer test

许可

MIT 许可证(MIT)。