apichef/laravel-request-query-helper

轻松交互 JSON-API 查询参数。

v2.2.1 2021-03-28 18:57 UTC

README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

轻松交互 JSON-API 查询参数。

安装

通过 Composer

$ composer require apichef/laravel-request-query-helper

您可以使用以下命令发布配置文件

$ php artisan vendor:publish --provider="ApiChef\RequestQueryHelper\RequestQueryHelperServiceProvider"

用法

配置

默认配置遵循 {json:api} 规范

return [
    /* Configuration for inclusion of related resources */
    'include' => [
        'name' => 'include',
    ],

    /* Configuration for filtering resource collections */
    'filter' => [
        'name' => 'filter',
    ],

    /* Configuration for sorting resource collections */
    'sort' => [
        'name' => 'sort',
    ],

    /* Configuration for sparse field-sets */
    'fields' => [
        'name' => 'fields',
    ],

    /* Configuration for pagination */
    'pagination' => [
        'name' => 'page',
        'number' => 'number',
        'size' => 'size',
    ],
];

包含和过滤

此包向查询对象添加了 filtersincludes 方法。两种方法都返回 QueryParamBag,可以解析基于数组和字符串的请求查询字符串。

例如

GET '/posts?include=comments:limit(5):sort(created_at|desc),author'

或者

GET '/posts?include[comments][limit]=5&include[comments][sort]=created_at|desc&include[author]'

以下示例基于上述请求。

use Illuminate\Http\Request;

class ExampleController extends Controller
{
    public function show(Request $request)
    {
        $params = $request->includes();
        
        // has
        
        $params->has('comments'); // true
        $params->has('comments.limit'); // true
        $params->has('comments.sort'); // true
        $params->has('comments.foo'); // false
        $params->has('author'); // true
        
        // get
        
        $params->get('comments.limit'); // [5]
        $params->get('comments.sort'); // ['created_at', 'desc']
        
        // isEmpty
        
        $params->isEmpty('comments'); // false
        $params->isEmpty('author'); // true
    }
}

## Sorts

// todo

## Fields

// todo

## Pagination

// todo

变更日志

请参阅 CHANGELOG 了解最近的变化。

测试

$ composer test

贡献

请参阅 CONTRIBUTINGCODE_OF_CONDUCT 了解详细信息。

安全

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

致谢

许可

MIT 许可证 (MIT)。请参阅 许可文件 了解更多信息。