ngoctp/laravel-easy-jsonapi

遵循Extended Fractal包以实现更智能的API响应使用

v1.0.5 2018-08-29 10:59 UTC

This package is not auto-updated.

Last update: 2024-09-29 05:14:39 UTC


README

这是一个易于响应常见API的扩展库。

此包支持Laravel 5.0及更高版本。

您还可以使用此包与Lumen一起使用。

安装

使用composer导入包

composer require ngoctp/laravel-easy-jsonapi

用法

转换器的新选项参数

通过构造函数中的新 options 参数,您可以在每个操作中可选地响应更多字段

class UserTransformer extends ExtendedTransformerAbstract
{

    protected $name = 'user';

    protected $availableIncludes = [
        'roles',
    ];

    /**
     * @param User $user
     * @return array
     */
    public function transform($user)
    {
        $data = [
            'id' => $user->id,
            'name' => $user->name,
        ];
        
        if (array_get($this->options, 'respond_birthday')) {
            $data['birthday'] = $user->birthday;
        }
        
        return $data;
    }

    public function includeRoles($user)
    {
        return new Collection($user->roles, new RoleTransformer(array_get($this->options, 'roles')), 'role');
    }
}

// Controller
class UserController extends Controller {
    public function index($request) {
        $users = \App\Models\User::get();
        
        return eja_data($users, new \App\Transformers\UserTransformer(
            [
                'respond_birthday' => true,
                'roles' => [
                    'respond_name' => false,
                ]
            ]
        ));
    }
}

响应成功消息

class UserController extends Controller {
    public function store($request) {
        // ...
        
        return eja_success('Created user successfully');
    }
}

响应错误消息

class UserController extends Controller {
    public function update($request) {
        $validUsername = false;
        
        if (!$validUsername) {
            return eja_error('Username is not valid');
        }
        
        return eja_success('Updated user successfully');
    }
}

响应普通表单错误消息

class UserController extends Controller {
    public function update($request) {
        $validator = Validator::make($inputs, $rules);
        
        if ($validator->fails()) {
            return eja_form_error($validator);
        }
        
        return eja_success('Updated user successfully');
    }
}

响应数据

class UserController extends Controller {
    public function index($request) {
        $users = \App\Models\User::get();
        //$users = \App\Models\User::paginate(10);
        
        return eja_data($users, new \App\Transformers\UserTransformer());
    }
}

编码愉快 :)