2014-12-29 2 views
3

Как заявляет documentation (REST Service Tutorial -> Create a REST Service -> [infobox] Code-Connected vs DB-Connected services), встроенная функциональность для служб, подключенных к БД, является «более быстрой разработкой приложений (RAD) или инструментом прототипирования».(Как) Могут ли фильтры/параметры использоваться с подключенной к базе данных службой в Apigility?

Ну, теперь я разрабатываю очень маленькое приложение и думаю, что этой возможности прототипирования может быть достаточно. Но даже этому маленькому приложению нужна простая фильтрация/запрос параметризации, например: предметы по name = 'foo', предметы по id < x and id > y, такие вещи.

Службы, связанные с DB, обеспечивают фильтрацию? Если да, как с этим справиться?

ответ

1

Для этого вы собираетесь использовать пакет проверки содержания zf (см. 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, указывающий, что запрос не прошел проверку.