3

正如 Apigility文档( REST Service Tutorial -> Create a REST Service -> [infobox] Code-Connected vs DB-Connected services) 所说,DB 连接服务的内置功能“更像是一种快速应用程序开发 (RAD) 或原型设计工具”。

好吧,现在我正在开发一个非常小的应用程序,并且认为,这个原型设计功能可能就足够了。但即使是这个小应用程序也需要一个简单的过滤/请求参数化,例如:items by name = 'foo',items by id < x and id > y,诸如此类的东西。

连接数据库的服务是否提供过滤?如果是,如何处理?

4

1 回答 1

1

为此,您将使用 zf-content-validation 包(请参阅https://apigility.org/documentation/modules/zf-content-validation)。

使用内容验证模块,您可以在模块配置部分定义输入过滤器,并指定使用哪个输入过滤器来验证您的服务请求。

例如(来自文档):

'zf-content-validation' => array(
    'Application\Controller\HelloWorld' => array(
        'input_filter' => 'Application\Controller\HelloWorld\Validator',
        'POST' => 'Application\Controller\HelloWorld\CreationValidator',
    ),
),


'input_filter_specs' => array(
    'Application\Controller\HelloWorldGet' => array(
        0 => array(
            'name' => 'name',
            'required' => true,
            'filters' => array(
                0 => array(
                    'name' => 'Zend\Filter\StringTrim',
                    'options' => array(),
                ),
            ),
            'validators' => array(),
            'description' => 'Hello to name',
            'allow_empty' => false,
            'continue_if_empty' => false,
        ),
    ),
),

此配置将验证对您的 HelloWorld 控制器的请求是否包含一个字符串形式的“名称”参数,并且还会为您修剪空格。如果您的请求具有查询参数,?name=foo您的控制器将获得foo名称参数。或者,如果您的请求不包含名称参数,您将收到一个 ApiProblem 响应,指示该请求未通过验证。

于 2015-04-28T21:25:41.290 回答