shirokovnv/laravel-query-api-backend

统一API,从任何HTTP客户端运行eloquent模型查询

0.1.0 2021-05-02 06:53 UTC

This package is auto-updated.

Last update: 2024-09-29 06:02:53 UTC


README

Latest Version on Packagist Total Downloads Build Status StyleCI

统一API,从任何HTTP客户端运行eloquent模型查询。

有关查询数据格式和前端使用方法,请参阅此包

安装

通过Composer

$ composer require shirokovnv/laravel-query-api-backend

使用

确保所有迁移已完成

php artisan migrate

发布配置

php artisan vendor:publish --provider="Shirokovnv\LaravelQueryApiBackend\LaravelQueryApiBackendServiceProvider" --tag=config

安装后,您可以在控制器中执行如下操作

$queryRunner = LaravelQueryApiBackend::makeQueryRunnerInstance($request, $options);
$queryResult = $queryRunner->run();
$queryRunner->saveLog();
      
return response()->json($queryResult);

$request是Illuminate\Http\Request或Illuminate\Foundation\Http\FormRequest

有关可用选项,请参阅配置部分

请求必须包含以下键

query_data

query_mode

client_request_id

这可以在中间件中提供(检查示例控制器和ClientRequestId中间件)

示例控制器

Shirokovnv\LaravelQueryApiBackend\Http\Controllers\QueryApiController

可用的查询模式

transaction

作为一个整体运行几个查询。如果其中一个查询失败,事务将回滚。

multiple

单独运行几个查询。

所有发生的错误都将添加到错误池中,与其他结果一起。

可用的查询类型

create

delete

fetch(即select)

find

update

custom

授权

该包提供了一种使用查询授权操作的方式。

默认情况下不需要授权。

  1. 要启用它,首先,您想要授权请求的模型应该实现Shirokovnv\LaravelQueryApiBackend\Support\ShouldAuthorize接口。

该接口很简单,包含一个静态方法

    public static function shouldAuthorizeAbilities(): array;

此函数必须返回包含能力名称的数组,例如。

    return ['create', 'update', 'view', 'viewAny'];

查询类型名称和授权能力名称相关联

create -> create

custom -> custom

delete -> delete

fetch -> viewAny

find -> view

update -> update

  1. 第二个选项是您模型的默认 laravel策略

每个策略都包含特定的方法,您可以在其中自由实现任何查询授权逻辑。

验证

每个查询都可以通过以下方式进行验证

  1. 使用Laravel FormRequest生成器为模型创建请求。

例如,为App\Models\User创建请求,名称为Models\UserRequest

  1. 模型应实现Shirokovnv\LaravelQueryApiBackend\Support\ShouldValidate接口

有一个静态方法

    public static function shouldValidateActions(): array;

例如

    return ['create', 'fetch', 'update', 'delete'];

可用的操作列表等于查询类型名称列表。

  1. FormRequest操作名称与方法相关联

custom, create -> POST

update -> PATCH

delete -> DELETE

find, fetch -> GET

变更日志

请参阅changelog获取有关最近更改的更多信息。

测试

$ composer test

贡献

请参阅contributing.md获取详细信息和一个待办事项列表。

安全

如果您发现任何安全相关的问题,请通过电子邮件shirokovnv@gmail.com而不是使用问题跟踪器。

鸣谢

许可证

MIT。请参阅许可证文件获取更多信息。