shirokovnv / laravel-query-api-backend
统一API,从任何HTTP客户端运行eloquent模型查询
Requires
- illuminate/database: ^5.8|^6.0|^7.0|^8.0
- illuminate/support: ~5.8|~6|~7|~8
Requires (Dev)
- orchestra/testbench: ~5|~6
- phpunit/phpunit: ~9.0
This package is auto-updated.
Last update: 2024-09-29 06:02:53 UTC
README
统一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
授权
该包提供了一种使用查询授权操作的方式。
默认情况下不需要授权。
- 要启用它,首先,您想要授权请求的模型应该实现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
- 第二个选项是您模型的默认 laravel策略
每个策略都包含特定的方法,您可以在其中自由实现任何查询授权逻辑。
验证
每个查询都可以通过以下方式进行验证
- 使用Laravel FormRequest生成器为模型创建请求。
例如,为App\Models\User创建请求,名称为Models\UserRequest
- 模型应实现Shirokovnv\LaravelQueryApiBackend\Support\ShouldValidate接口
有一个静态方法
public static function shouldValidateActions(): array;
例如
return ['create', 'fetch', 'update', 'delete'];
可用的操作列表等于查询类型名称列表。
- FormRequest操作名称与方法相关联
custom, create -> POST
update -> PATCH
delete -> DELETE
find, fetch -> GET
变更日志
请参阅changelog获取有关最近更改的更多信息。
测试
$ composer test
贡献
请参阅contributing.md获取详细信息和一个待办事项列表。
安全
如果您发现任何安全相关的问题,请通过电子邮件shirokovnv@gmail.com而不是使用问题跟踪器。
鸣谢
许可证
MIT。请参阅许可证文件获取更多信息。