正如Apigility documentation(REST Service Tutorial -> Create a REST Service -> [infobox] Code-Connected vs DB-Connected services
)所说,数据库连接服务的内置功能更像是快速应用程序开发(RAD)或原型设计工具。&# 34;
好吧,现在我正在开发一个非常小的应用程序并认为,这种原型设计功能可能就足够了。但即使这个小应用程序也需要一个简单的过滤/请求参数化,例如:name = 'foo'
项目,id < x and id > y
项目,等等。
数据库连接服务是否提供过滤功能?如果是,如何处理?
答案 0 :(得分: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控制器的请求是否包含&#34; name&#34;参数是一个字符串,它还会为你修剪空白。如果您的请求具有查询参数?name=foo
,则您的控制器将获取name参数的foo
。或者,如果您的请求中没有包含名称参数,您将收到ApiProblem响应,表明该请求未通过验证。