Поле соответствия, принимающее массив внедренных объектов?

#json #zend-framework2 #laminas-api-tools

#json #zend-framework2 #пластины-api-инструменты

Вопрос:

Я хотел бы создать службу Apigility REST, которая принимает сообщения, например, объекта user, который имеет поле, содержащее массив объектов address. Я могу определить поле без средств проверки и обработать необработанный JSON в своем коде, но мне интересно, есть ли лучший способ сделать это, где вложенные объекты также могут быть проверены с помощью Apigility?

Ответ №1:

В Apigility есть модуль под названием content-validation — он позволяет вам настраивать фильтры ввода для ваших сервисов, и данные запроса будут проходить через фильтр ввода для проверки, а при сбое проверки будет возвращен соответствующий ответ ApiProblem. (см. https://apigility.org/documentation/api-primer/content-validation )

Это по-прежнему возлагает на вас ответственность за настройку фильтра ввода, который будет соответствовать вашим потребностям.

Я бы проверил packagist.org для библиотеки средства проверки схемы JSON, которая может принимать схему JSON и полезную нагрузку JSON и проверять, что полезная нагрузка правильно сформирована в соответствии со схемой. Затем вы можете легко реализовать пользовательский InputFilter и привязать его к своим сервисам. Это даст вам подтверждение того, что основной объект и вложенные объекты правильно сформированы (т. Е. у пользователя есть имя, электронная почта, дата рождения, а поле адреса содержит объекты, у которых у всех есть адрес / улица / почтовый индекс / и т.д.).