sigep/request

解析查询字符串的实用工具

0.2.10 2015-11-29 14:34 UTC

This package is not auto-updated.

Last update: 2024-09-28 16:47:03 UTC


README

此包旨在简化查询字符串的解析,并获取有关用户希望获取的数据的信息。

(!) 此包仅解析查询字符串并返回一个格式化的数组。它不与数据库或其他类似项交互。返回的数据以及过滤、排序等的应用取决于应用程序的实现。

安装

在您的 composer.json 中添加存储库并声明依赖关系。

{
    [...]
    "repositories": [
        [...]
        {
            "type": "git",
            "url": "git@github.com:Cohros/Request.git"
        }
    ],
    "require": {
        [...]
        "sigep/request": "*"
    },
}

运行以下命令

composer update

用法

Request 支持分页、排序、过滤和搜索。

分页

对于分页,Request 使用 pageoffset 参数。

示例

GET /cities
GET /cities?page=2
GET /cities?offset=100
GET /cities?offset=100&page=2
  • 第一次请求将获取所有城市;
  • 第二次将返回列表的第二页。默认情况下,偏移量设置为 15,因此将返回 15 个城市;
  • 第三次将返回前 100 个城市。请求未指定页码,但定义了偏移量,因此 Request 假设这是第一页;
  • 第四次请求将返回列表的第二页,偏移量为 100。

要确定请求是否需要分页,您可以使用

$Request = new \Sigep\Request\Request;
$Request->paginate(); // returns a boolean

要获取请求的页码,请使用

$Request->page(); // returns a integer

要获取偏移量,请使用

$Request->offset(); // returns a integer

要设置默认偏移量(包默认为 15),请使用

$Request->setDefaultOffset(100); // set the default to 100

嵌入

有时资源与其他资源有关联,并且您希望能够提供这些关系,如果用户需要的话。在这种情况下使用 embed 参数。

示例

GET /cities?embed=country
GET /cities?embed=country,state
  • 第一次请求将返回所有城市及其国家;
  • 第二次将返回所有城市及其国家和州。

要获取嵌入关系的列表,请使用

$Request->embed(); // return a array

排序

您可以根据对象的任何属性对对象列表进行排序。

示例

GET /cities?sort=name
GET /cities?sort=-name
GET /cities?sort=state,name
  • 第一次请求将按字母顺序返回城市的列表;
  • 第二次将按字母顺序返回城市的列表;
  • 第三次将按州和名称的字母顺序返回城市的列表;

要获取排序参数,请使用

// GET /cities?sort=state,name
$sort = $Request->sort();

/**
$sort will be similar to:
array (
    'state' => 'ASC',
    'name' => 'ASC',
)
**/

搜索

示例

GET /cars?q=peugeot
  • 上述请求将搜索具有 peugeot 的汽车。查询可以检查名称、描述、品牌或资源具有的任何内容。

要获取参数,请使用

$Request->search(); // return a string

应用程序负责定义如何执行搜索以及将使用的运算符(等于、类似等)。

过滤器

过滤器允许您根据其属性过滤结果。

示例

GET /user?gender=female
GET /user?age=>20&gender=female
GET /user?age=>20,<30
GET /users?age=20>,30<
GET /users?age=20;30
  • 第一次请求将返回所有女用户的列表;
  • 第二次将返回年龄超过 20 岁的女用户的列表;
  • 第三次将返回年龄在 20 岁到 30 岁之间的用户列表(20 到 30 不包括);
  • 第三次将返回年龄在 20 岁或以上且 30 岁或以下(20 到 30 包括)的用户列表;
  • 第四次将返回年龄为 20 或 30 岁的用户列表;

要获取过滤器参数,请使用

$filters = $Request->filter();
/**
GET /user?gender=female
$filters = array (
    'gender' => array (
        '=' => 'female',
    )
);

GET /user?age=+20&gender=female
$filters = array (
    'age' => array ('>' => array ('20')),
    'female' => array ('=' => array (0 => 'female')),
);

GET /users?age=20;30
$filters = array (
    'age' => array (
        '=' => array('20', '30'),
    )
);

注意,过滤器是查询字符串上的参数。一些词已被其他方法保留,如 pageoffsetsort

有关更多信息,请探索源代码:)

使用 StackEdit 编写。